티스토리 뷰
1. application.properties 배포용으로 하나를 만들기
application-local.properties에서 DB의 host가 localhost 였다면,
application-docker.properties에서는 'host.docker.internal'로 알고 있었지만, 이건 docker desktop, 즉 windows일때고,
linux에서는 172.17.0.1 라고 함. (터미널 접속해서 ip addr 쳐보면 docker의 inet값으로 하는거라는 말도 있음)
2. Dockerfile
app의 root directory에 생성
#Dockerfile
FROM bellsoft/liberica-openjdk-alpine:17 # spring boot 3 app을 실행하기 위한 jdk17 이미지
CMD ["./mvnw", "clean", "package"]
VOLUME /tmp
ARG JAR_FILE=target/*.war
COPY ${JAR_FILE} app.war # 위의 명령어로 만들어진 war파일을 docker로 가져가기
EXPOSE 8080 # app 포트번호
ENTRYPOINT ["java","-jar","/app.war","--spring.profiles.active=docker"] # profile을 docker로 app 실행
3. docker image만들기
Dockerfile이 있는 directory에서 다음 명령어 실행
(docker hub에 올려놓고 gcp 터미널에서 hub로부터 내려 받을 예정임)
$ docker build -t <docker-hub-id>/<image-name> .
4. docker hub로 push
$ docker push <docker-hub-id>/<image-name>
5. gcp 터미널에서 container 생성
$ docker run -d --name <app-name> -p 8080:8080 <docker-hub-id>/<image-name>
6. 배포 확인
https://<VM 인스턴스 외부IP>:8080/<요청url> 요청해보기
또는
docker container의 log 확인하기
$ docekr logs -f <app-name>