Header Banner
Kakao Logo

TECH.KAKAO.GG

기술 자료/Docker/Java 애플리케이션 Docker 이미지 빌드 가이드

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

Docker
👁️ 1063개월 전

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
생성된 JAR 파일 위치
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 클릭

docker image

(위 이미지에는 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