Skip to content

Commit 0cc963d

Browse files
fix : Update cd.yml
1 parent da3ef81 commit 0cc963d

File tree

1 file changed

+51
-41
lines changed

1 file changed

+51
-41
lines changed

.github/workflows/cd.yml

Lines changed: 51 additions & 41 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
name: Deploy to AWS EC2 using Docker
1+
name: Deploy to Ubuntu Server using Docker
22

33
on:
44
push:
@@ -7,80 +7,90 @@ on:
77

88
env:
99
DOCKER_IMAGE_NAME: kanepark/app
10-
EC2_HOST: ec2-3-35-214-67.ap-northeast-2.compute.amazonaws.com
11-
EC2_SSH_USER: ubuntu
12-
PRIVATE_KEY: ${{ secrets.EC2_SSH_PRIVATE_KEY }}
10+
SERVER_HOST: 211.117.197.184
11+
SERVER_SSH_USER: parkhaein
12+
PRIVATE_KEY: ${{ secrets.SSH_PRIVATE_KEY }}
1313

1414
jobs:
1515
build-and-push-docker:
16-
1716
runs-on: ubuntu-latest
1817

1918
steps:
2019
- name: Checkout
2120
uses: actions/checkout@v3
22-
with:
23-
token: ${{ secrets.SUBMODULE_TOKEN }}
24-
submodules: true
2521

26-
- name: Set up JDK 17
22+
- name: Set up JDK 21
2723
uses: actions/setup-java@v3
2824
with:
29-
java-version: '17'
25+
java-version: '21'
3026
distribution: 'temurin'
3127

3228
- name: Grant execute permission for gradlew
3329
run: chmod +x ./gradlew
3430

3531
- name: Build with Gradle
36-
env:
37-
JASYPT_PASSWORD: ${{ secrets.JASYPT_PASSWORD }} # GitHub Secrets에서 비밀번호 가져오기
38-
run: ./gradlew build -Djasypt.encryptor.password=${{ secrets.JASYPT_PASSWORD }} --info
39-
32+
run: ./gradlew clean build --info
4033

4134
- name: Build the Docker image
4235
run: docker build . --file Dockerfile --tag ${{ env.DOCKER_IMAGE_NAME }}:latest
4336

44-
45-
- name: Login to Docker Hub using Access Token
46-
run: echo "${{ secrets.DOCKER_HUB_TOKEN }}" | docker login -u ${{ secrets.DOCKER_USERNAME }} --password-stdin
37+
- name: Login to Docker Hub
38+
uses: docker/login-action@v2
39+
with:
40+
username: ${{ secrets.KANE_DOCKER_USERNAME }}
41+
password: ${{ secrets.KANE_DOCKER_HUB_TOKEN }}
4742

4843
- name: Push the Docker image
4944
run: docker push ${{ env.DOCKER_IMAGE_NAME }}:latest
5045

51-
52-
53-
deploy-to-ec2:
54-
46+
deploy-to-ubuntu-server:
5547
needs: build-and-push-docker
5648
runs-on: ubuntu-latest
57-
49+
5850
steps:
59-
- name: Deploy to EC2
51+
- name: Deploy to Ubuntu Server
6052
uses: appleboy/ssh-action@master
6153
with:
62-
host: ${{ env.EC2_HOST }}
63-
username: ${{ env.EC2_SSH_USER }}
64-
key: ${{ env.PRIVATE_KEY }}
54+
host: ${{ env.SERVER_HOST }}
55+
username: ${{ env.SERVER_SSH_USER }}
56+
key: ${{ secrets.SSH_PRIVATE_KEY }}
57+
port: 234
6558
script: |
6659
LOG_DIR="/home/ubuntu/app-logs"
6760
mkdir -p $LOG_DIR
6861
touch $LOG_DIR/app.log
62+
63+
# sudo 명령어에 비밀번호 자동 입력
64+
echo "${{ secrets.SUDO_PASSWORD }}" | sudo -S docker container prune -f
65+
echo "${{ secrets.SUDO_PASSWORD }}" | sudo -S docker image prune -af
66+
echo "${{ secrets.SUDO_PASSWORD }}" | sudo -S docker volume prune -f
67+
echo "${{ secrets.SUDO_PASSWORD }}" | sudo -S docker system prune -af --volumes
68+
69+
# 기존 컨테이너 종료 (종료를 기다림)
70+
CONTAINER_ID=$(sudo docker ps -q --filter "publish=80")
6971

70-
71-
sudo docker container prune -f
72-
sudo docker image prune -af
73-
sudo docker volume prune -f
74-
sudo docker system prune -af --volumes
75-
76-
CONTAINER_ID=$(sudo docker ps -q --filter "publish=80-8080")
77-
7872
if [ ! -z "$CONTAINER_ID" ]; then
79-
sudo docker stop $CONTAINER_ID
80-
sudo docker rm $CONTAINER_ID
73+
echo "${{ secrets.SUDO_PASSWORD }}" | sudo -S docker stop $CONTAINER_ID
74+
echo "컨테이너 종료 대기 중..."
75+
76+
# 컨테이너 종료 상태를 기다림
77+
while true; do
78+
# 컨테이너 상태 확인
79+
CONTAINER_STATUS=$(sudo docker inspect --format '{{.State.Status}}' $CONTAINER_ID)
80+
81+
# 종료된 상태이면 루프 종료
82+
if [ "$CONTAINER_STATUS" == "exited" ]; then
83+
echo "컨테이너 종료 완료"
84+
break
85+
fi
86+
87+
# 1초 대기 후 다시 확인
88+
sleep 1
89+
done
8190
fi
82-
83-
sudo docker pull ${{ env.DOCKER_HUB }} kanepark/app:latest
84-
# sudo docker run --name container1 -d -p 80:8080 -e TZ=Asia/Seoul ${{ env.DOCKER_HUB }} kanepark/app:latest
85-
sudo docker run --name container1 -d -p 80:8080 -e TZ=Asia/Seoul \
86-
-v $LOG_DIR/app.log:/app/logs/app.log ${{ env.DOCKER_IMAGE_NAME }}:latest
91+
92+
93+
# Docker 이미지 업데이트 및 컨테이너 실행
94+
echo "${{ secrets.SUDO_PASSWORD }}" | sudo -S docker pull ${{ env.DOCKER_IMAGE_NAME }}:latest
95+
echo "${{ secrets.SUDO_PASSWORD }}" | sudo -S docker run --name mindsync-be-container -d -p 80:8080 -e TZ=Asia/Seoul \
96+
-v $LOG_DIR/app.log:/app/logs/app.log ${{ env.DOCKER_IMAGE_NAME }}:latest

0 commit comments

Comments
 (0)