[Docker] Docker와 Docker hub, Docker hub push
개요
ci/cd 로컬 환경 테스트를 위한 모든 삽질이 끝나고 ∙∙∙하아
app을 도커 이미지에 올려서 도커 허브로 푸쉬하고,
Google Cloud Run을 통해 배포하기 위한 구축 과정에 대한 포스팅이다.
배포 자동화 아키텍처는 다음 그림과 같다.
이번 포스팅에서 정리해볼 것은
위 아키텍처를 구축하는 핵심 과정 중 첫 번째 부분 - app코드 Docker Image 생성과 Docker Hub에 Push하기이다.
포스팅에 앞서 로컬 환경에 다음 세팅이 모두 완료되었음을 가정하고, 이와 관련한 설명은 생략한다.
- Docker Local Setting
- Docker Installation on VM Instance - https://cobinding.tistory.com/212
- Docker Hub Setting
- GCP VM instance Setting
- Bitbucket Repository, branch Setting
- Source Tree - Bitbucket - IntelliJ 연동
1. Docker Image 생성
애플리케이션 코드가 담긴 도커 이미지를 생성해준다.
왜 생성하냐?
아키텍처에 나와있듯이, 도커 이미지를 원격 저장소인 도커 허브에 push하고, 이를 google cloud run이 Pull하여 사용하기 때문이다.
따라서 배포 자동화를 위해 도커 이미지를 생성해주는 단계는 필수적이다.
어떻게 생성하냐?
Dockerfile 작성을 통해
1-1. Dockerfile작성
Spring boot 프로젝트의 root directory에 Dockerfile을 생성하고, 도커 이미지 빌드 관련 세팅을 작성한다.
예시)
# base image 설정
FROM openjdk:17-jdk
# application code 경로
ARG JAR_FILE=build/libs/*.jar
# application code를 docker image app.jar에 복사
COPY ${JAR_FILE} app.jar
ENTRYPOINT ["java", "-jar", "/app.jar"]
1-2. Jar 파일 생성
intelliJ 기준 gradle > build > bootJar을 통해 build/libs 디렉토리와 .jar 파일이 생성된다.
Dockerfile을 보면 ARG 인자에 이와 관련된 세팅이 있음을 알 수 있다.
2. 도커 허브에 해당 내용을 반영해주자(도커 이미지 push)
2-1. Docker Image Build
[도커 이미지 빌드]
# docker build 명령어
docker build -t myName/docker-gcp-test .
[결과물]
Spring boot 프로젝트가 담긴 파일의 터미널 창을 열어서 위 명령어를 실행해주자.
이때 젤 뒤에 .을 꼭 빼먹지 말아야 한다 !!
현재 디렉토리에 있는 Dockerfile을 사용한다는 뜻이고, 이 파일에 build 내용이 담겨있기에 반드시 필요한 정보다.
2-2. Docker Image Push
[도커 이미지 푸쉬]
# docker hub push
docker push myName/docker-gcp-test:latest
[결과물]
원격 저장소에 저장이 잘 되었다..
이렇게 이미지 생성과 Docker Hub에 Push하기까지는 성공이다.
이번 포스팅을 통해 application 코드 관련 docker image 생성과 생성된 이미지를 원격 저장소인 docker hub에 push하는 과정을 살펴보았다.
이제 저장된 코드에 변경 감지가 들어왔을 때, 이를 Google Cloud Build와 Google cloud Run으로 자동화하는 과정을 세팅해보자.