mun dev

[Docker] SpringBoot 프로젝트 Docker로 배포하기(2) 본문

공부/Docker

[Docker] SpringBoot 프로젝트 Docker로 배포하기(2)

mndev 2023. 6. 2. 11:10

[Docker] SpringBoot 프로젝트 Docker로 배포하기(1)

1편 과정을 마치고 난후 jdk를 설치해준다.


1. jdk 설치

  • yum -y install wget curl
  • cd /tmp
  • rm -rf /opt/jdk-17

jdk 17 다운로드 Linux 64-bit

.bashrc 내용

# .bashrc

# User specific aliases and functions

alias rm='rm -i'
alias cp='cp -i'
alias mv='mv -i'

export JAVA_HOME=/opt/jdk-17 # 추가
export PATH=$JAVA_HOME/bin:$PATH # 추가

# Source global definitions
if [ -f /etc/bashrc ]; then
        . /etc/bashrc
fi
  • source ~/.bashrc
    수정된 프로파일을 시스템에 반영한다.
  • java -version

JDK 설치 확인


2. 소스코드 다운로드

우리는 깃허브에 있는 프로젝트를 배포할 것이기 때문에 git clone후 빌드 준비 한다.

  • rm -rf /docker_projects/gram/project
  • mkdir -p /docker_projects/gram/project
  • cd /docker_projects/gram/project
  • git clone 프로젝트링크 .
  • 링크에서 .git 빼고 이 명령어에서 가장 끝 부분에 있는 . 을 빠뜨리면 안됨
  • git checkout main
  • 배포를 원하는 브랜치를 선택
  • mv src/main/resources/application-secret.yml.default src/main/resources/application-secret.yml
  • 보통 secret파일은 gitignore로 되어있기 때문에 배포를 대비하여 default로 만들어 놓은 파일은 secret으로 바꿔준다.
  • vim src/main/resources/application-secret.yml
  • 실제 작동하는 키 정보 넣기

3. gradlew 를 소유자가 실행 가능한 상태로 변경

  • cd /docker_projects/gram/project
  • ls -alh | fgrep gradlew
  • chmod 744 gradlew
  • ls -alh | fgrep gradlew

4. 빌드

해당 프로젝트의 테스트케이스가 존재한다면, 테스트케이스를 다 성공적으로 통과해야 빌드가 가능하다.

./gradlew clean build

5. 실행

  • java -jar -Dspring.profiles.active=prod build/libs/gramgram-0.0.1-SNAPSHOT.jar
  • CTRL + C 로 종료 할 수 있음

6. wget 으로 접속이 잘되는지 테스트

새 터미널로 서버 접속

  • wget -qO- http://localhost:8080
  • 새 터미널 닫고
  • exitCtrl + C 눌러서 스프링부트 정지
  • 다시 원래 터미널로 이동 후

7. Dockerfile 생성

  • vim Dockerfile
FROM openjdk:17-jdk-alpine
ARG JAR_FILE=build/libs/gramgram-0.0.1-SNAPSHOT.jar
COPY ${JAR_FILE} app.jar
EXPOSE 8080
ENTRYPOINT ["java","-jar","-Dspring.profiles.active=prod","/app.jar"]

8. gram(프로젝트 이름) 기존 이미지가 혹시 있다면 제거

  • docker rm -f gram_1
  • docker rmi -f gram

9. gram(프로젝트 이름) 이미지 생성

  • docker build -t gram .

10. gram 이미지 실행

docker run \
  --name=gram_1 \
  --restart unless-stopped \
  -p 80:8080 \
  -e TZ=Asia/Seoul \
  -d \
  gram

11. 크롬에서 접속

  • 크롬 : http://공인IP

1편에서 네이버 플랫폼으로 생성했던 서버의 공인 IP이다.

접속하면 이렇게 나오게 되는데, 바로는 안 나올 수 있으니 5~10분 정도 기다리면 이와 같은 화면이 나오는 걸 확인 할 수 있다.