2 분 소요

이전 글에 젠킨스 서버 설정을 마쳤다.
이제 배포 서버 설정을 해보자.

기본 설정

배포 인스턴스에 ssh 접속한다.

jdk 설치 및 JAVA_HOME 설정

# 설치할 수 있는 버전 확인
$ yum list java*jdk-devel

# 설치
$ sudo yum install java-11-openjdk-devel.x86_64

# 기본 자바 선택
$ sudo update-alternatives --config java

이제 JAVA_HOME을 설정하자.

$ update-alternatives --list java
# 출력: /usr/lib/jvm/java-11-openjdk-11.0.16.1.1-1.el7_9.x86_64/bin/java

$ sudo vi /etc/profile
# 맨 하단에 아래 명령어 추가
export JAVA_HOME=/usr/lib/jvm/java-11-openjdk-11.0.16.1.1-1.el7_9.x86_64 PATH=$PATH:$JAVA_HOME/bin export PATH

# 변경사항 적용
$ source /etc/profile

$ echo $JAVA_HOME
$ update-alternatives --list java
# 출력: /usr/lib/jvm/java-11-openjdk-amd64/bin/java

$ sudo vi /etc/environment
# 추가: JAVA_HOME="/usr/lib/jvm/java-11-openjdk-amd64"

# 변경 사항 적용
$ source /etc/environment

# 변경 확인
$ echo $JAVA_HOME

docker 설치

이 글을 참고했으며, 공식 사이트를 참고해도 된다.

# yum-utils 업데이트
$ sudo yum install -y yum-utils

# Docker-ce 저장소 추가
$ sudo yum-config-manager \
--add-repo \
https://download.docker.com/linux/centos/docker-ce.repo

# 도커 엔진 설치
$ sudo yum install docker-ce docker-ce-cli containerd.io docker-compose-plugin

# 도커 엔진 실행 및 서비스 등록
$ sudo systemctl start docker
$ sudo systemctl enable docker
$ sudo systemctl status docker

스크린샷 2022-10-14 오후 6 09 55

본격적인 시작

1. 배포 서버에 Dockerfile 생성

$ vi Dockerfile
FROM openjdk:11
WORKDIR /var/deploy
EXPOSE 8080
CMD ["nohup", "java", "-jar", "server-0.0.1-SNAPSHOT.jar", ">", "app.log", "&"]

스크린샷 2022-10-24 오후 9 26 00

스크린샷 2022-10-24 오후 9 26 41

openjdk11 이미지를 기반으로
/var/deploy 디렉토리에서 작업할 것이고
8080포트를 노출한다.
.jar 파일을 백그라운드에서 실행할 것이다.

Dockerfile을 작성했으면, 이제 이미지로 만들어주자.

$ sudo docker build -t naem-server .

스크린샷 2022-10-24 오후 9 28 58
위 명령어를 입력하면 naem-server 라는 이름의 이미지가 생긴다.

2. 배포 서버(= 워커 인스턴스)에 init.sh 작성

이 글을 참고했다.

init.sh는 젠킨스가 배포 서버에 접속해서 실행할 쉘 명령어의 집합이라고 생각하면 된다. 도커 컨테이너를 제거하고, 다시 생성하는 것을 적어둘 것이다.

$ vi init.sh
sudo docker rm -f naem-container
sudo docker run --name naem-container \
        -p 8080:8080 \
        -d \
        -v /home/ln8847/deploy:/var/deploy \
        naem-server

스크린샷 2022-10-24 오후 9 31 54

-v 호스트:컨테이너
호스트의 /home/ln8847/deploy 디렉토리와
컨테이너의 /var/deploy 파일 시스템을 공유한다.

스크린샷 2022-10-24 오후 9 33 20
이제 모든 준비를 마쳤다. 코드를 작성해서 깃헙에 푸시 날려보자.

데이터베이스를 추가해 아래로도 해봤다.

sudo docker rm -f naem-container
docker run --platform linux/x86_64 -d -p 8080:8080 --network naem-network \
        -e "spring.datasource.url=jdbc:mysql://mysql:3306/naem?serverTimezone=Asia/Seoul&characterEncoding=UTF-8&useSSL=false&allowPublicKeyRetrieval=true" \
        -e "spring.redis.host=redis" \
        -v /home/ln8847/deploy:/var/deploy \
        --name naem-container \
        naem-server

젠킨스 서버

그 전에 젠킨스 서버를 기동하자.
그리고 아래 커맨드로 상태를 확인해보자.

$ sudo service jenkins status

스크린샷 2022-10-24 오후 9 41 28

====================

이 글을 참고했다.

shell script 명령어

docker login -u  -p 
docker build --build-arg JAR_FILE=build/libs/*.jar -t smkim08/springboot-docker-test .
docker tag smkim08/springboot-docker-test {이미지를 가져올 도커허브}
docker push {이미지를 가져올 도커허브}

Docker pull, Container Delete, Docker run

docker pull webatoz/spring-docker:latest
docker stop test-springboot
docker rm -f test-springboot
docker run --name test-springboot -itd -p 80:80 {이미지를 가져올 도커허브}

3. Github에 PUSH

4. 자동 배포 됐는지 확인

==========================

이 글을 참고했다.

$ chmod 700 ~/.ssh
$ chmod 600 ~/.ssh/authorized_keys


💛 개인 공부 기록용 블로그입니다. 👻

맨 위로 이동하기

태그:

카테고리:

업데이트: