Print
카테고리: [ Java ]
조회수: 25593

Spring Boot 애플리케이션을 Docker 환경에 배포하기 위해서는 크게 4가지의 과정이 필요하다.

  1. Spring Boot 애플리케이션 만들기
  2. Dockerfile 만들기
  3. Dockerfile을 빌드하여 Docker Image 만들기
  4. Docker Image를 기반으로 컨테이너 생성 및 배포하기

 

Spring Boot 애플리케이션 만들기

Spring Boot 애플리케이션은 간단하게 작성했으며 8080 포트에서 동작한다.

@SpringBootApplication
@RestController
public class DemoApplication {

    public static void main(String[] args) {
        SpringApplication.run(DemoApplication.class, args);
    }

    @GetMapping("hello")
    public String test() {
        return "HELLO!";
    }

    @GetMapping("world")
    public String test2() {
        return "WORLD!";
    }
}

 

Dockerfile 만들기

Dockerfile이란 Docker Image를 만들기 위한 설정 파일이다.
여러가지 명령어를 토대로 Dockerfile을 작성하면 설정된 내용대로 Docker Image를 만들 수 있다.

명령

설명

FROM

베이스 이미지 지정

RUN

명령 실행

CMD

컨테이너 실행 명령

LABEL

라벨 설정

EXPOSE

포트 익스포트

ENV

환경변수

ADD

파일/디렉토리 추가

COPY

파일 복사

ENTRYPOINT

컨테이너 실행 명령

VOLUME

볼륨 마운트

USER

사용자 지정

WORKDIR

작업 디렉토리

ARG

Dockerfile 에서의 변수

프로젝트의 현재 위치에서 Dockerfile을 작성한다.

# Docker 환경 구성
FROM java:8

# 해당 이미지를 관리하는 사람
LABEL maintainer="patpang"

# 컨테이너가 필요한 데이터를 저장하는 곳
VOLUME /tmp

# 외부에 노출되는 포트 번호
EXPOSE 8080

# 현재 JAR 파일 변수 설정
ARG JAR_FILE=target/demo-0.0.1-SNAPSHOT.jar

# demo.jar의 이름으로 JAR 파일 추가
ADD ${JAR_FILE} demo.jar

# 컨테이너 실행 시 실행될 명령어 "java -jar demo.jar"
ENTRYPOINT ["java", "-jar", "demo.jar"]

 

Dockerfile 빌드 및 Docker Image 생성하기

필요없는 Docker Image는 docker rmi 명령어를 사용하여 제거할 수 있다.

 

컨테이너 생성 및 배포하기

이제 Docker Image를 기반으로 컨테이너를 실행할 수 있다.
현재 Spring Boot 애플리케이션은 8080 포트에 배포되어 있다.
필자는 이를 5555 포트에 배포하고자 한다.

localhost:5555/hello에 접근했을 때 Spring Boot 애플리케이션이 배포된 것을 확인할 수 있다.

 

참조

https://hub.docker.com/r/scottyengineering/java11

https://nirsa.tistory.com/63

https://imasoftwareengineer.tistory.com/40