티스토리 뷰
SpringBoot 애플리케이션을 Undertow 기반으로 실행하고 Docker로 배포하는 방법을 단계별로 정리했습니다. 이 가이드를 따라 하면 간단히 Docker 컨테이너 환경에서 애플리케이션을 실행할 수 있습니다.
1. 프로젝트 설정
1.1. Gradle 설정
build.gradle 파일에서 Undertow 및 Docker 빌드를 위한 플러그인을 설정합니다.
# build.gradle
plugins {
id 'java'
id 'org.springframework.boot' version '3.4.0'
id 'io.spring.dependency-management' version '1.1.6'
}
dependencies {
implementation 'org.springframework.boot:spring-boot-starter-undertow'
implementation 'org.springframework.boot:spring-boot-starter'
}
bootJar {
archiveFileName = 'my-api.jar'
}
1.2. 포트 설정
# application.yml
server:
port: 33000
2. Dockerfile 작성
# 1. OpenJDK 기반 이미지 사용
FROM amazoncorretto:23
# 2. 애플리케이션 JAR 복사
ARG JAR_FILE=build/libs/my-api.jar
COPY ${JAR_FILE} app.jar
# 3. 애플리케이션 실행 명령
ENTRYPOINT ["java", "-jar", "/app.jar"]
# 4. 컨테이너 포트 노출
EXPOSE 33000
- 루트 디렉터리에 Dockerfile 을 작성합니다.
3. Docker 빌드 및 실행
3.1. Docker 이미지 생성
docker build -t my-api-app .
- my-api-app 이라는 이름으로 이미지를 생성하였습니다.
3.2. Docker 컨테이너 실행
docker run -d -p 33000:33000 -e SPRING_PROFILES_ACTIVE=dev --name my-api-container my-api-app
- Active Profile 을 지정하여 컨테이너를 실행합니다.
4. Gradle 로 Docker 관리
task dockerBuild(type: Exec) {
commandLine 'docker', 'build', '-t', 'my-api-app', '.'
}
task dockerRun(type: Exec) {
commandLine 'docker', 'run', '-d', '-p', '33000:33000', '-e', 'SPRING_PROFILES_ACTIVE=dev', '--name', 'boss-api-container', 'boss-api-app'
}
task dockerStopAndRemove(type: Exec) {
doFirst {
exec {
commandLine 'docker', 'stop', 'my-api-container'
}
exec {
commandLine 'docker', 'rm', 'my-api-container'
}
}
}
task fullDeploy {
dependsOn dockerBuild, dockerStopAndRemove, dockerRun
}
- Gradle 명령어를 통해 배포를 자동화합니다.
# Docker 이미지 빌드:
./gradlew dockerBuild
# Docker 컨테이너 실행:
./gradlew dockerRun
# 전체 배포(빌드, 기존 컨테이너 삭제, 새 컨테이너 실행):
./gradlew fullDeploy
감사합니다.
'프레임워크 > SpringBoot' 카테고리의 다른 글
[SpringBoot] RabbitMQ 튜토리얼 (0) | 2025.03.10 |
---|---|
[SpringBoot] RestErrorAdvice 설정하는 방법(SpringSecurity+JWT) (0) | 2025.01.16 |
[SpringBoot] JPA + GraphQL 연동 예제 (2) | 2024.12.23 |
[Spring] AOP 의 주요 사용처 (1) | 2024.12.03 |
[Spring] 스프링 어노테이션 동작 원리 (2) | 2024.12.03 |
최근에 올라온 글
- Total
- Today
- Yesterday