티스토리 뷰

728x90

1️⃣ 도커 이미지 생성

1) jar 파일 생성

- 각자의 환경에 맞게 jar 파일을 build 해주면 된다. 나의 경우엔 gradle 프로젝트로 아래와 같이 build 하여 jar 파일을 생성했다. ( 프로젝트폴더/build/libs 폴더에 jar 파일 생성)

gradle bootJar

 

2) Dockerfile 작성

- jar 파일 위치를 잡아주어야겠지만 그냥 / 하위에 옮겼다

FROM adoptopenjdk/openjdk11 #기본이미지
EXPOSE 9005 #어플리케이션이 실행 될 포트
ADD build/libs/test-0.0.1-SNAPSHOT.jar /test.jar #jar 파일 복사 ADD 호스트 위치 도커위치 적어준다.
ENTRYPOINT ["java", "-jar", "/test.jar"] #컨테이너 실행 시 자동으로 실행 할 명령어

 

3) Docker 이미지 빌드

#Dockefile이 있는 위치로 이동
$ docker build -t 이미지명:버전 .

#예
#docker build -t testimage:0.1 .

 

2️⃣ 컨테이너 실행

- adoptopenjdk/openjdk11를 기반으로 이미지를 생성할 때 컨테이너 내부의 파일 구조가 어떤지를 몰라 볼륨 위치를 어떻게 잡아야 할 지 몰랐는데 adoptopenjdk/openjdk11 이미지는 linux 파일 구조와 동일하다.

- volume 위치를 잡을 때 아래 이미지를 참고하여 볼륨을 잡으면 된다. 

 

컨테이너 생성 명령어

docker run -p 9005:9005 --network test_network -v C:\dev\docker\volume\log:/var/log -v C:\dev\docker\properties:/app -e SPRING_CONFIG_LOCATION=/app/ --name test testimage:0.1

 

1) --network test_network

다른 컨테이너(예 : db 컨테이너) 와 해당 컨테이너를 같은 네트워크로 묶어주기 위해  

 

2) -v C:\dev\docker\volume\log:/var/log

  jar 파일 내에서 로그를 /var/log에 생성하고 이 로그를 host 에서도 볼 수 있도록 host의   C:\dev\docker\volume\log 위치로 볼륨을 잡아 주었다. 

 

3) -v C:\dev\docker\properties:/app 

 컨테이너 실행 시 외부에서 properties를 주입 할 수 있도록 호스트의 C:\dev\docker\properties 에 application.yml 을 넣어주고 볼륨을 /app로 잡아주었다.

좌 : 호스트의 properties 우 : 컨테이너 내부의 properties

 

4) -e SPRING_CONFIG_LOCATION=/app/

- jar 파일 실행시 환경변수로 properties 위치를 잡아 /app 하위에 있는 application.yml을 참조할 수 있도록 설정

 

5) -name test_ container

- 컨테이너 명 설정

 

6) testimage:0.1

- 사용할 이미지   

공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/11   »
1 2
3 4 5 6 7 8 9
10 11 12 13 14 15 16
17 18 19 20 21 22 23
24 25 26 27 28 29 30
글 보관함