-
Notifications
You must be signed in to change notification settings - Fork 0
84 lines (73 loc) · 3.23 KB
/
Copy pathdeploy.yml
File metadata and controls
84 lines (73 loc) · 3.23 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
name: AWS EC2에 배포
on:
push:
branches:
- main
jobs:
deploy:
runs-on: ubuntu-latest
steps:
- name: 코드 체크아웃
uses: actions/checkout@v2
- name: Docker Buildx 설정
uses: docker/setup-buildx-action@v1
- name: Docker 레이어 캐시
uses: actions/cache@v2
with:
path: /tmp/.buildx-cache
key: ${{ runner.os }}-buildx-${{ github.sha }}
restore-keys: |
${{ runner.os }}-buildx-
- name: DockerHub에 로그인
uses: docker/login-action@v1
with:
username: ${{ secrets.DOCKER_USERNAME }}
password: ${{ secrets.DOCKER_PASSWORD }}
- name: Docker 이미지 빌드 및 푸시
run: |
docker build -t ohseungjun/3team-back-server:latest .
docker push ohseungjun/3team-back-server:latest
- name: SSH 키 추가
uses: webfactory/ssh-agent@v0.5.3
with:
ssh-private-key: ${{ secrets.EC2_SSH_KEY }}
- name: EC2에 배포
run: |
ssh -o StrictHostKeyChecking=no ${{ secrets.EC2_USER }}@${{ secrets.EC2_HOST }} << 'EOF'
sudo docker pull ohseungjun/3team-back-server:latest
sudo docker stop 3team-back-server || true
sudo docker rm 3team-back-server || true
sudo docker run -d -p 80:3000 \
-e MYSQL_HOST='${{ secrets.MYSQL_HOST }}' \
-e MYSQL_PORT='${{ secrets.MYSQL_PORT }}' \
-e MYSQL_USER_NAME='${{ secrets.MYSQL_USER_NAME }}' \
-e MYSQL_PASSWORD='${{ secrets.MYSQL_PASSWORD }}' \
-e MYSQL_DATABASE='${{ secrets.MYSQL_DATABASE }}' \
-e SERVER_PORT='${{ secrets.SERVER_PORT }}' \
-e JWT_SECRET_KEY='${{ secrets.JWT_SECRET_KEY }}' \
-e GOOGLE_CLIENT_ID='${{ secrets.GOOGLE_CLIENT_ID }}' \
-e GOOGLE_CLIENT_SECRET='${{ secrets.GOOGLE_CLIENT_SECRET }}' \
-e GOOGLE_CALLBACK_URL='${{ secrets.GOOGLE_CALLBACK_URL }}' \
-e SWAGGER_PUBLIC_IP='${{ secrets.SWAGGER_PUBLIC_IP }}' \
-e SWAGGER_PORT='${{ secrets.SWAGGER_PORT }}' \
-e AWS_REGION='${{ secrets.AWS_REGION }}' \
-e AWS_ACCESS_KEY_ID='${{ secrets.AWS_ACCESS_KEY_ID }}' \
-e AWS_SECRET_ACCESS_KEY='${{ secrets.AWS_SECRET_ACCESS_KEY }}' \
-e KAKAO_CLIENT_ID='${{ secrets.KAKAO_CLIENT_ID }}' \
-e KAKAO_CALLBACK_URL='${{ secrets.KAKAO_CALLBACK_URL }}' \
-e PAYMENT_SECRET_KEY='${{ secrets.PAYMENT_SECRET_KEY }}' \
-e GUEST_ACCESS_TOKEN='${{ secrets.GUEST_ACCESS_TOKEN }}' \
-e LOCAL_BASE_URL='${{ secrets.LOCAL_BASE_URL }}' \
-e SERVER_BASE_URL='${{ secrets.SERVER_BASE_URL }}' \
--name 3team-back-server \
--memory=1g \
-e NODE_OPTIONS="--max-old-space-size=1024" \
ohseungjun/3team-back-server:latest
# Clean up unused images
sudo docker image prune -f
# Optionally delete old images for specific repository
old_images=$(sudo docker images --format '{{.Repository}}:{{.Tag}} {{.ID}}' | grep 'ohseungjun/3team-back-server' | grep '<none>' | awk '{print $2}')
if [ -n "$old_images" ]; then
sudo docker rmi -f $old_images
fi
EOF