1. 스프링 부트 프로젝트에 Dockerfile 생성
FROM openjdk:21-jdk-slim
# JAR 파일 이름을 인자로 받음
ARG JAR_FILE=build/libs/OAuth2_9oormthonUNIV-0.0.1-SNAPSHOT.jar
# 컨테이너 내부에 app.jar로 복사
COPY ${JAR_FILE} app.jar
# 8080 포트 개방
EXPOSE 8080
# Spring Boot 실행
ENTRYPOINT ["java", "-jar", "app.jar"]
Dockerfile을 통해 Spring Boot 애플리케이션을 실행할 수 있는 Docker 이미지를 생성한다.
🎯 이미지는 컨테이너를 실행하기 위한 실행 환경과 애플리케이션 코드, 필요한 설정, 의존성, 라이브러리 등을 모두 포함한 "설계도" 라고 보면 된다.
2. 스프링 부트 프로젝트에 docker-compose.yml 생성
services:
mysql-db:
image: mysql:8.0
container_name: mysql-db
restart: always
environment:
MYSQL_ROOT_PASSWORD:
MYSQL_DATABASE:
ports:
- "3306:3306"
networks:
- spring-net
healthcheck:
test: ["CMD", "mysqladmin", "ping", "-h", "localhost"]
interval: 10s
timeout: 5s
retries: 5
spring-app:
build: .
container_name: spring-app
ports:
- "8080:8080"
depends_on:
mysql-db:
condition: service_healthy
networks:
- spring-net
networks:
spring-net:
docker-compose.yml은 여러 컨테이너를 한 번에 구성하고 실행하도록 해준다.
이 프로젝트에서는 spring프로젝트와 MySQL이 필요하므로 실행할 컨테이너들을 mysql-db, spring-app로 정의하고, Dockerfile로 이미지를 생성한 후
networks:
spring-net:
위 코드를 통해 두 컨테이너가 같은 네트워크 안에서 통신하도록 해준다.
3. Ec2 인스턴스 생성
컨테이너를 Ec2 인스턴스에서 생성하고 실행하기 위해서 Ec2 인스턴스를 생성 해야 한다.
4. 배포 준비
자바 설치
sudo apt install -y openjdk-21-jdk
Docker 및 Docker Compose 설치
sudo apt update
sudo apt install -y docker.io docker-compose
sudo systemctl start docker
sudo systemctl enable docker
깃허브 리포지 토리에서 프로젝트 클론
sudo apt install git
git clone https://github.com/your/repo.git
프로젝트 파일로 이동 후 Spring Boot 프로젝트 빌드
./gradlew build -x test
Docker Compose로 컨테이너 실행
sudo docker-compose up --build -d
-d: 백그라운드 실행
--build: 코드가 수정되었을 경우 새로 빌드
sudo docker ps를 통해 컨테이너가 잘 작동하는지 확인할 수 있다.
'9oormthonUNIV 스터디 프로젝트' 카테고리의 다른 글
GitHub Actions + Docker로 CI/CD 구축 (0) | 2025.05.25 |
---|---|
Jenkins + Docker를 활용한 기본 CI/CD 파이프라인 구축 (0) | 2025.05.10 |
Spring Boot + Kafka + Docker로 비동기 메시징 구현하기 (0) | 2025.05.05 |
S3를 이용한 이미지 관리[SpringBoot] (0) | 2025.04.15 |