Dandy Now!
  • Spring Boot 애플리케이션 Docker 이미지 빌드 및 실행 가이드
    2025년 07월 15일 21시 08분 06초에 업로드 된 글입니다.
    작성자: DandyNow
    728x90
    반응형

    Spring Boot 애플리케이션 Docker 이미지 빌드 및 실행 가이드

    Spring Boot 애플리케이션을 도커(Docker) 이미지로 만들고 실행하는 과정은 매우 간단하다. 이 글에서는 애플리케이션 빌드부터 도커 이미지 생성, 그리고 컨테이너 실행까지의 핵심 과정을 단순 명료하게 설명한다.

    1. Spring Boot 애플리케이션 빌드

    도커 이미지를 만들기 전에 먼저 Spring Boot 애플리케이션을 빌드해야 한다. gradlew clean build 명령어를 사용하여 프로젝트를 빌드하면 실행 가능한 JAR 파일이 생성된다.

    • gradlew clean build: 프로젝트를 클린(clean)하고 빌드하는 명령어이다. 이 과정을 통해 build/libs 디렉토리에 JAR 파일이 생성된다.

      C:\Users\dandycode\Documents\GitHub\docker-practice\demo>gradlew clean build

    2. Dockerfile 작성

    도커 이미지를 빌드하기 위한 Dockerfile을 작성해야 한다. Dockerfile은 애플리케이션을 실행하는 데 필요한 환경과 파일을 정의하는 스크립트이다.

    FROM openjdk:17-jdk
    
    COPY build/libs/*SNAPSHOT.jar app.jar
    
    ENTRYPOINT [ "java", "-jar", "/app.jar" ]
    • FROM openjdk:17-jdk: 기본 이미지를 openjdk:17-jdk로 지정한다. Spring Boot 애플리케이션은 Java 17 환경에서 실행되므로 이에 적합한 이미지를 선택한다.
    • COPY build/libs/*SNAPSHOT.jar app.jar: 빌드된 JAR 파일을 app.jar라는 이름으로 도커 이미지 내부에 복사한다. *SNAPSHOT.jar는 빌드 시 생성되는 JAR 파일의 이름을 유연하게 처리하기 위함이다.
    • ENTRYPOINT [ "java", "-jar", "/app.jar" ]: 컨테이너가 시작될 때 실행될 명령어를 지정한다. 복사된 app.jar 파일을 java -jar 명령어로 실행한다.

    3. Docker 이미지 빌드

    작성된 Dockerfile을 사용하여 도커 이미지를 빌드한다.

    • docker build -t spring-server .: 현재 디렉토리의 Dockerfile을 사용하여 spring-server라는 이름의 도커 이미지를 빌드한다. -t 옵션은 이미지에 태그(이름)를 지정하는 데 사용된다. .Dockerfile이 현재 디렉토리에 있음을 의미한다.

      C:\Users\dandycode\Documents\GitHub\docker-practice\demo>docker build -t spring-server .

    4. Docker 이미지 확인

    이미지 빌드가 완료되면 docker image ls 명령어로 빌드된 이미지를 확인할 수 있다.

    • docker image ls: 로컬에 저장된 도커 이미지 목록을 보여준다. 방금 빌드한 spring-server 이미지를 확인할 수 있다.

    5. Docker 컨테이너 실행

    빌드된 이미지를 기반으로 도커 컨테이너를 실행한다.

    1) docker run -d -p 8080:8080 spring-server

    • docker run: 도커 컨테이너를 실행하는 명령어이다.
    • -d: 컨테이너를 백그라운드에서 실행한다.
    • -p 8080:8080: 호스트 머신의 8080 포트를 컨테이너의 8080 포트에 매핑한다. 이를 통해 외부에서 호스트의 8080 포트로 접속하면 컨테이너 내부의 Spring Boot 애플리케이션에 접근할 수 있다.
    • spring-server: 실행할 도커 이미지의 이름이다.

    2) docker ps

    • docker ps: 현재 실행 중인 도커 컨테이너 목록을 보여준다. 방금 실행한 spring-server 컨테이너가 정상적으로 실행 중인지 확인할 수 있다.

    3) 로그 확인

    • docker logs [CONTAINER_ID]: 특정 컨테이너의 로그를 보여준다. [CONTAINER_ID]docker ps 명령어로 확인한 컨테이너 ID의 앞 몇 자리를 입력하면 된다. 로그를 통해 Spring Boot 애플리케이션이 성공적으로 시작되었는지 확인할 수 있다.

    728x90
    반응형
    댓글