본문 바로가기
스프링 부트3

스프링 부트 3에서 Docker로 배포하기

by 굿센스굿 2024. 12. 5.
반응형

 

스프링 부트 3은 간결하고 강력한 애플리케이션 개발을 가능하게 하는 프레임워크로, Docker와 결합하면 애플리케이션을 더욱 효율적으로 배포할 수 있습니다. 이번 글에서는 스프링 부트 3 애플리케이션을 Docker를 사용해 배포하는 방법을 단계별로 알아보겠습니다. 이를 통해 여러분은 컨테이너화된 환경에서 스프링 부트 애플리케이션을 손쉽게 실행할 수 있을 것입니다.


1. 프로젝트 준비

Docker를 사용해 스프링 부트 애플리케이션을 배포하기 위해 먼저 기본적인 스프링 부트 프로젝트를 설정해야 합니다. Spring Initializr를 사용하면 간편하게 프로젝트를 생성할 수 있습니다.

1.1 프로젝트 생성

  • 빌드 도구: Gradle 또는 Maven
  • 의존성 추가: Spring Web, Spring Boot DevTools
  • Java 버전: Java 17 이상

이제 생성된 프로젝트에 간단한 API를 추가해 봅시다.

@RestController
public class HelloController {

    @GetMapping("/hello")
    public String sayHello() {
        return "Hello, Docker!";
    }
}

1.2 프로젝트 빌드

Docker 이미지를 생성하려면 프로젝트가 빌드되어야 합니다.
Maven을 사용하는 경우 다음 명령을 실행합니다:

./mvnw clean package

빌드 후 target 디렉토리에 생성된 .jar 파일을 확인할 수 있습니다.


2. Dockerfile 작성

Dockerfile은 애플리케이션을 Docker 컨테이너로 변환하는 데 필요한 설정을 정의하는 파일입니다. 프로젝트 루트 디렉토리에 Dockerfile을 생성하고 다음 내용을 작성합니다.

# OpenJDK 이미지를 베이스로 사용
FROM openjdk:17-jdk-slim

# 애플리케이션 jar 파일을 복사
COPY target/demo-0.0.1-SNAPSHOT.jar app.jar

# 애플리케이션 실행 명령
ENTRYPOINT ["java", "-jar", "app.jar"]

2.1 Docker 이미지 생성

작성한 Dockerfile을 기반으로 Docker 이미지를 생성합니다.

docker build -t springboot-docker-demo .

2.2 Docker 이미지 확인

이미지가 성공적으로 생성되었는지 확인하려면 다음 명령을 실행합니다:

docker images

3. Docker 컨테이너 실행

생성된 이미지를 기반으로 컨테이너를 실행합니다.

docker run -p 8080:8080 springboot-docker-demo

이제 브라우저에서 http://localhost:8080/hello로 접속하면 Hello, Docker! 메시지를 확인할 수 있습니다.


4. 실전 예제: 추가적인 설정

예제 1: 환경 변수 전달

Docker 컨테이너에서 환경 변수를 전달할 수 있습니다.

ENV SPRING_PROFILES_ACTIVE=prod

애플리케이션 실행 시 특정 프로파일이 활성화됩니다.

예제 2: 멀티스테이지 빌드

Docker 이미지를 최적화하려면 멀티스테이지 빌드를 활용하세요.

# Build stage
FROM maven:3.8.5-openjdk-17 AS build
COPY . .
RUN mvn clean package

# Run stage
FROM openjdk:17-jdk-slim
COPY --from=build target/demo-0.0.1-SNAPSHOT.jar app.jar
ENTRYPOINT ["java", "-jar", "app.jar"]

예제 3: Docker Compose로 실행

Docker Compose를 사용하면 여러 컨테이너를 동시에 관리할 수 있습니다.

docker-compose.yml 예:

version: '3.8'
services:
  app:
    build: .
    ports:
      - "8080:8080"

명령어:

docker-compose up

결론

스프링 부트 3 애플리케이션을 Docker로 배포하면 개발과 배포 과정이 간소화되고 일관된 실행 환경을 제공받을 수 있습니다. 이번 글에서 살펴본 단계들을 따라하며 실습해 보세요. Docker를 활용한 배포는 애플리케이션의 확장성과 유지보수성을 크게 향상시킬 것입니다. 🚀

반응형