Spring Boot 애플리케이션을 Docker 환경에 배포하기 위해서는 크게 4가지의 과정이 필요하다.
- Spring Boot 애플리케이션 만들기
- Dockerfile 만들기
- Dockerfile을 빌드하여 Docker Image 만들기
- 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 생성하기
-
Dockerfile 빌드(Docker Image 생성) :
docker build -t demo .
-
현재 로컬에 설치된 Docker Image :
docker images

필요없는 Docker Image는 docker rmi
명령어를 사용하여 제거할 수 있다.
컨테이너 생성 및 배포하기
이제 Docker Image를 기반으로 컨테이너를 실행할 수 있다.
현재 Spring Boot 애플리케이션은 8080 포트에 배포되어 있다.
필자는 이를 5555 포트에 배포하고자 한다.
-
Docker Container 생성 및 실행 :
docker run -p 5555:8080 demo

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

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