Springboot 애플리케이션을 Docker Container로 실행하기 위해선
우선 Docker Image로 만들어야 한다. 차례대로 기록해 보겠습니다.
springboot 프로젝트 받기
먼저 스프링부트 프로젝트를 initializr를 통해 생성하자. 아래 GENERATE 버튼을 클릭하면 간단하게 생성 완료. 의존성으로 Spring Web과 DevTools를 추가했습니다.
controller 하나를 간단히 만들어서 서버가 정상적으로 동작하는지 확인해 봤습니다. 문제가 없다면 해당 부트 프로젝트를 docker image로 만들어보자.
Dockerfile 만들기
Dockerfile은 말 그대로 파일인데, Docker Image를 만들게 해주는 파일이다. 중요한 점으로 파일명은 꼭 'Dockerfile'이라고 만들도록 하자. 윈도우에선 상관없더라도 리눅스 환경에서는 대소문자를 구분하기에 dockerfile(소문자)로 하면 추후에 문제가 될 수 있다.
FROM openjdk:17-jdk
COPY build/libs/*SNAPSHOT.jar app.jar
ENTRYPOINT ["java", "-jar", "/app.jar"]
부트 프로젝트를 만들 때 jdk를 17로 선택했었기 때문에 컨테이너의 '베이스 이미지'로 'openjdk:17-jdk'를 작성했다. COPY는 호스트 컴퓨터에 있는 파일을 복사해서 컨테이너로 전달하는 역할하는 명령어다. 사용법은 COPY [호스트 컴퓨터에 있는 복사할 파일의 경로] [컨테이너에서 파일이 위치할 경로 겸 이름]. 컨테이너는 이미지를 기반으로 만들어지는 것이기에 우리는 빌드한 파일을 COPY할 예정입니다. ENTRYPOINT는 컨테이너가 시작할 때 실행되는 명령어로 ENTRYPOINT ["명령어", "옵션", "실행할 내용"] 각각 분리해서 작성.
Springboot 빌드
컨테이너로 옮길 jar파일을 만들자. 인텔리제이에서 터미널 창을 열고(Alt + F12) 아래 명령어를 실행하면 빌드가 진행된다.
./gradlew clean build
Docker Image 생성
$ docker build -t demo-server .
Dockerfile을 재료로 하여 Image를 만든다고 했었다. docker build [dockerfile이 위치한 경로] -t [이미지명] 명령어로 이미지를 생성하면 된다.
Springboot Image로 컨테이너 실행
스프링부트는 기본적으로 8080포트에서 실행된다. 따라서 아래 명령어를 통해 이미지를 컨테이너로 실행(위 명령어에 대한 내용은 여기에서 확인). 컨테이너의 log를 확인해 보니 정상적으로 스프링부트가 실행된 것이 확인되며, 브라우저에 localhost:8080 로도 응답이 정상 출력됐다.
정리하자면, 하나의 애플리케이션을 이미지로 만들었고, 이를 컨테이너로 실행시켰다.
'Container' 카테고리의 다른 글
Docker Volume 개념 및 활용 예시 (0) | 2025.04.28 |
---|---|
Docker 명령어 사용 및 예시(nginx 설치&실행) (0) | 2025.04.25 |
Docker Desktop 설치 및 확인 (0) | 2025.04.17 |
도커 컨테이너(Container)와 이미지(Image)란? (9) | 2020.11.02 |
도커(Docker)와 가상머신(Virtual Machine) 비교 (2) | 2020.10.02 |