Java 애플리케이션 Docker 이미지 빌드 가이드

KUKJIN LEE • 1개월 전 작성
Java 애플리케이션을 컨테이너화하여 배포하면 운영 환경에 영향을 받지 않고 쉽게 실행할 수 있습니다. Docker를 활용하여 Java 애플리케이션을 컨테이너화하는 방법을 설명드리겠습니다. 아래 URL은 간단한 Java 서버 구현 내용입니다.
https://kakao.gg/tech/backend/67b6c0ca2d3471597980a6c9
Dockerfile을 활용하여 Java 애플리케이션 컨테이너화
📌 프로젝트 구조
먼저, 간단한 Java 애플리케이션을 준비합니다.
/java-docker-app
├── src/main/java/com/example/demo/DemoApplication.java
├── Dockerfile
├── build.gradle 또는 pom.xml
└── app.jar (빌드된 JAR 파일)
📌 Java 애플리케이션 빌드
Gradle 또는 Maven을 사용하여 .jar
파일을 빌드합니다.
Gradle
./gradlew bootJar
생성된 JAR 파일 위치
build/libs/app.jar
Maven
mvn clean package
target/app.jar
Dockerfile 작성
이제 Dockerfile
을 작성하여 Java 애플리케이션을 컨테이너화합니다.
📌 OpenJDK 기반 Docker 이미지 사용
Dockerfile을 프로젝트 루트 디렉토리에 생성하고 다음 내용을 추가합니다.
# 공식 OpenJDK 이미지 사용
FROM openjdk:17-jdk-slim
# 작업 디렉토리 설정
WORKDIR /app
# 애플리케이션 JAR 파일 복사
COPY build/libs/app.jar app.jar
# 컨테이너에서 실행할 명령어 지정
CMD ["java", "-jar", "app.jar"]
Docker 이미지 빌드 및 실행
📌 Docker 이미지 빌드
이제 Dockerfile
을 기반으로 Docker 이미지를 빌드합니다.
docker build -t java-docker-app .
빌드가 완료되면 docker images
명령어로 확인할 수 있습니다.
docker images
출력 예시
REPOSITORY TAG IMAGE ID CREATED SIZE
java-docker-app latest abc123456789 10 seconds ago 400MB
GUI가 사용 가능한 환경이라면 Docker Desktop을 통해 접속 후 Images 클릭
(위 이미지에는 Java Image가 존재하지 않습니다. 확인 방법에 대한 설명입니다.)
📌 Docker 컨테이너 실행
docker run -d -p 8080:8080 --name my-java-app java-docker-app
-
-d
: 백그라운드 실행 -
-p 8080:8080
: 호스트의 8080 포트를 컨테이너의 8080 포트에 매핑 -
--name my-java-app
: 컨테이너 이름 설정
📌 실행 확인
docker ps
📌 컨테이너 접속
docker exec -it my-java-app /bin/sh