도커파일 배포하기
도커파일을 배포하려면 다음 과정을 따릅니다.
1. dockerfile을 작성합니다
2. dockerfile을 build해서 docker image를 만듭니다.
3. dockerhub에 docker image를 push 합니다.
4. GCP instance에서 docker image를 pull 받습니다.
5. docker image를 run해서 container를 실행합니다.
spring boot에서 dockerfile을 작성하기 위해서는 다음 공식 문서를 참고합니다.
https://spring.io/guides/gs/spring-boot-docker/
1. dockerfile 작성
프로젝트의 root 경로에 Dockerfile을 만듭니다.
- (Maven) 버전
FROM openjdk:8-jdk-alpine
ARG JAR_FILE=target/*.jar
COPY ${JAR_FILE} app.jar
ENTRYPOINT ["java","-jar","/app.jar"]
- (Gradle) 버전
FROM openjdk:11.0.1
ARG JAR_FILE=app/build/libs/\*.jar
COPY ${JAR_FILE} app.jar
ENTRYPOINT ["java","-jar","/app.jar"]
2. dockerfile build
dockerfile을 build하기 이전에 먼저 DockerHub에서 저장소를 만들어야 합니다.
위쪽에 왼쪽박스는 계정ID이고 오른쪽은 저장소의 이름입니다.
Visibility는 Private도 상관없지만, 무료판에서는 1개로 제한되므로 Public을 설정하고 Create를 누릅니다.
왼쪽 위 빨간박스는 생성된 DockerHub 저장소 이름을 나타냅니다.
오른쪽 위 빨간박스는 해당 Dockerhub에 어떻게 image를 업로드하는지 명령어가 나와있습니다.
왼쪽 아래 빨간박스는 해당 Dockerhub로 push가 되면 해당 정보가 나타납니다.
오른쪽 아래 빨간박스는, Github와 연동해 push하면 자동으로 DockerHub를 최신화해주는 것인데, 유료입니다.
DockerHub 저장소 생성이 끝났으면, docker build를 합니다.
//Maven
docker build -t mamamu9751/cpu-bound-app .
//Gradle
docker build --build-arg JAR_FILE=/app/build/libs/\*.jar -t mamamu9751/cpu-bound-app .
docker build -t mamamu9751/springboot-bookclub .
build의 결과는 아래와 같습니다.
docker images를 통해 build가 잘 되었는지 확인합니다.
한번 로컬에서 docker run을 통해서 실행해봅니다
docker run -p 9059:9059 mamamu9751/springboot-bookclub
정상적으로 실행이 잘됩니다
3. dockerhub에 docker image push하기
dockerhub에 push하기 이전에 먼저 docker login으로 계정에 접근해야 합니다.
로그인 이후, 아까 Dockerhub의 저장소의 오른쪽 위 빨간박스의 명령어를 참고해 push를 합니다.
docker push mamamu9751/cpu-bound-app
push의 결과는 아래와 같습니다.
Dockerhub에서 확인해보니, 빨간박스의 내용으로 latest 태그이름을 가진 image가 업로드되었습니다.
4. GCP instance에서 docker image pull
GCP인스턴스에서 docker image를 pull받기 전에 먼저 docker를 설치하고 실행해야 합니다.
sudo yum install -y docker
sudo systemctl start docker
sudo chmod
Dockerhub에 올라온 public image를 pull 받습니다.
sudo docker pull mamamu9751/cpu-bound-app
아래와 같이 완료하였다는 문구가 나옵니다.
5. docker image run으로 실행하기
docker image를 실행시키기 위해서 다음 명령어를 입력합니다.
sudo docker run -p 80:80 mamamu9751/cpu-bound-app
아래와 같이 Spring Boot Application이 실행됩니다.
해당 GCP instance의 /hash/123가 정상적으로 실행됩니다.
'문제 해결, 기술 비교 > 개인프로젝트(북클럽)' 카테고리의 다른 글
Artillery로 한줄 게시판 저장/조회 성능 개선하기 (0) | 2022.05.13 |
---|---|
개인 프로젝트 오류 해결 (0) | 2022.05.13 |
Github webhook & Jenkins 연동하기 (0) | 2022.02.05 |
nginx를 이용한 로드밸런싱 및 무중단 배포 (0) | 2022.02.03 |
Jenkins 이용해서 배포하기 (0) | 2022.02.02 |