간단하게 spring boot jar파일을 도커 이미지로 생성하고 컨테이너를 실행해서 서버를 띄워보는 스터디 과정을 정리한 글입니다.
docker 이미지를 생성하기 앞서 전체적인 순서를 정리해보았습니다.
1. 이미지를 빌드할 때 실행시킬 jar 파일을 준비합니다.
2. 이미지를 생성하기 위해 필요한 Dockerfile을 작성합니다.
3. 이미지를 빌드합니다.
4. 컨테이너를 실행시켜 spring boot 서버를 띄웁니다.
jar파일 준비
인텔리제이 우측 상단에 Gradle탭 > Task > boot.jar를 실행해줍니다.
빌드가 성공하면 프로젝트 build > libs 경로에 jar파일이 생성됩니다.
Dockerfile 작성
Dockerfile이란?
Dockerfile은 사용자가 이미지를 생성할 때 사용해야 할 모든 커맨드 라인을 담고 있는 일종의 매뉴얼과 같은 텍스트 문서입니다. Docker는 Dockerfile의 설명을 읽고 자동으로 이미지를 빌드할 수 있습니다.
Dockerfile은 실행할 파일과 같은 디렉토리에 존재해야 합니다. 관리하기 편하게 빌드한 jar파일을 Dockerfile을 생성할 디렉토리로 옮겨주었습니다.
그다음 같은 디렉토리 내에 Dockerfile을 작성해줍니다.
FROM openjdk:8-jdk-alpine
ARG JAR_FILE=jpashop-0.0.1-SNAPSHOT.jar
COPY ${JAR_FILE} myboot.jar
ENTRYPOINT ["java","-jar","/myboot.jar"]
FROM 이미지를 생성할 때 사용할 기반 이미지입니다. openjdk:8-jdk-alpine 이미지에서 레이어를 생성합니다.
ARG 변수 선언
COPY 실행할 jar파일을 도커 컨테이너 내부에 myboot.jar라는 이름으로 복사합니다. 상대 경로로 위치도 같이 설정 가능합니다.
ENTRYPOINT 컨테이너가 시작될 때 실행할 스크립트 혹은 명령을 정의합니다.
Image 빌드하기
docker build -t jpashop .
-t : 특정 이름으로 이미지를 빌드한다는 의미의 옵션입니다.
. : Dockerfile의 경로를 나타냅니다. 현재는 빌드 명령어가 dockerfile와 같은 경로에서 실행되기 때문에 (.)으로 작성하였습니다.
docker images 명령어로 생성한 이미지를 조회합니다.
Container 실행
docker run -it -p 8081:8080 --name test jpashop
-p <external_host_port> : <container_host_port> : 호스트의 포트를 노출된 컨테이너 포트에 명시적으로 매핑하는 옵션입니다. 로컬의 8081 포트와 컨테이너의 8080 포트를 매핑합니다.
https://docs.docker.com/engine/reference/builder/
https://www.ibm.com/docs/ko/rtw/9.0.1?topic=stubs-publishing-docker-running-in-docker-container
'Dev > etc' 카테고리의 다른 글
스프링 빌드 시 Docker Container Image 생성 후 DockerHub push 자동화 하기 (0) | 2023.02.21 |
---|---|
행위검증 vs 상태검증 (Mock vs Stub) (0) | 2022.07.03 |
[Docker] Docker&Container 기본 개념 (0) | 2022.06.02 |
[Docker] Docker 로 mariaDb 실행하고 접속하기 (0) | 2021.12.24 |
Gatsby로 Github블로그 만들기 (0) | 2021.12.24 |
댓글