Skip to content

Commit 4de117a

Browse files
authored
Merge pull request #455 from boostcampwm2023/BE/refactor/#454-AWS-마이그레이션
Be/refactor/#454 aws 마이그레이션
2 parents fd50c20 + c39b42c commit 4de117a

File tree

10 files changed

+154
-140
lines changed

10 files changed

+154
-140
lines changed

.github/workflows/blue-green-cd.yml

Lines changed: 16 additions & 28 deletions
Original file line numberDiff line numberDiff line change
@@ -2,14 +2,12 @@ name: Blue/Green CD
22

33
on:
44
push:
5+
paths: ["backend/**"]
56
branches: ["dev"]
67

78
env:
89
DOCKER_USERNAME: ${{ secrets.DOCKER_USERNAME }}
910
GITHUB_SHA: ${{ github.sha }}
10-
TURN_SERVER_NAME: ${{ secrets.TURN_SERVER_NAME }}
11-
TURN_SERVER_USER: ${{ secrets.TURN_SERVER_USER }}
12-
TURN_SERVER_PASSWORD: ${{ secrets.TURN_SERVER_PASSWORD }}
1311

1412
jobs:
1513
build:
@@ -25,28 +23,29 @@ jobs:
2523
echo "${{ secrets.ENV_FILE }}" > .env
2624
echo "DOCKER_USERNAME=${{ secrets.DOCKER_USERNAME }}" >> .env
2725
echo "GITHUB_SHA=${{ github.sha }}" >> .env
28-
echo "TURN_SERVER_NAME=${{ secrets.TURN_SERVER_NAME }}" >> .env
29-
echo "TURN_SERVER_USER=${{ secrets.TURN_SERVER_USER }}" >> .env
30-
echo "TURN_SERVER_PASSWORD=${{ secrets.TURN_SERVER_PASSWORD }}" >> .env
31-
echo "SENTRY_DSN=${{ secrets.SENTRY_DSN }}" >> .env
3226
mkdir -p config/nginx/ssl/
3327
echo "${{ secrets.SSL_OPTIONS }}" > config/nginx/ssl/options-ssl-nginx.conf
3428
echo "${{ secrets.SSL_FULLCHAIN }}" > config/nginx/ssl/fullchain.pem
3529
echo "${{ secrets.SSL_PRIVKEY }}" > config/nginx/ssl/privkey.pem
3630
echo "${{ secrets.SSL_DHPARAMS }}" > config/nginx/ssl/ssl-dhparams.pem
3731
38-
- name: Copy .env, deploy script, SSL files to Remote Server
32+
- name: Add Remote Host Key to known_hosts
33+
run: |
34+
mkdir -p ~/.ssh
35+
echo "${{ secrets.SSH_PUBLIC_KEY }}" >> ~/.ssh/known_hosts
36+
37+
- name: Copy some files needed for Deployment to Remote Server
3938
uses: appleboy/scp-action@master
4039
with:
4140
host: ${{ secrets.SSH_HOST }}
4241
username: ${{ secrets.SSH_USERNAME }}
43-
password: ${{ secrets.SSH_PASSWORD }}
42+
key: ${{ secrets.SSH_PRIVATE_KEY }}
4443
port: ${{ secrets.SSH_PORT }}
45-
source: "backend/.env,backend/deploy.sh,backend/config"
44+
source: "backend/.env,backend/deploy.sh,backend/config,backend/compose.blue-deploy.yml,backend/compose.green-deploy.yml,backend/Dockerfile.nginx"
4645
target: "~/app/"
4746
overwrite: true
4847

49-
- name: Docker login
48+
- name: Login to Docker Hub
5049
uses: docker/login-action@v3
5150
with:
5251
username: ${{ secrets.DOCKER_USERNAME }}
@@ -55,21 +54,10 @@ jobs:
5554
- name: Build & Push Docker Images (Blue & Green)
5655
run: |
5756
cd backend
58-
docker-compose -f docker-compose.blue.yml build --no-cache
59-
docker-compose -f docker-compose.green.yml build --no-cache
60-
docker-compose -f docker-compose.blue.yml push
61-
docker-compose -f docker-compose.green.yml push
62-
63-
- name: Copy Dockerfiles to Remote Server
64-
uses: appleboy/scp-action@master
65-
with:
66-
host: ${{ secrets.SSH_HOST }}
67-
username: ${{ secrets.SSH_USERNAME }}
68-
password: ${{ secrets.SSH_PASSWORD }}
69-
port: ${{ secrets.SSH_PORT }}
70-
source: "backend/docker-compose.blue.yml,backend/docker-compose.green.yml,backend/Dockerfile.nginx,backend/Dockerfile.was,backend/Dockerfile.signal"
71-
target: "~/app/"
72-
overwrite: true
57+
docker-compose -f compose.blue-build.yml build
58+
docker-compose -f compose.green-build.yml build
59+
docker-compose -f compose.blue-build.yml push
60+
docker-compose -f compose.green-build.yml push
7361
7462
deploy:
7563
needs: build
@@ -82,12 +70,12 @@ jobs:
8270
username: ${{ secrets.DOCKER_USERNAME }}
8371
password: ${{ secrets.DOCKER_ACCESS_TOKEN }}
8472

85-
- name: Run Docker on Remote Server
73+
- name: Run a New Version of the application on Remote Server
8674
uses: appleboy/ssh-action@master
8775
with:
8876
host: ${{ secrets.SSH_HOST }}
8977
username: ${{ secrets.SSH_USERNAME }}
90-
password: ${{ secrets.SSH_PASSWORD }}
78+
key: ${{ secrets.SSH_PRIVATE_KEY }}
9179
port: ${{ secrets.SSH_PORT }}
9280
script: |
9381
cd ~/app/backend

backend/Dockerfile.signal

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -2,13 +2,12 @@ FROM node:20
22

33
RUN apt-get update && apt-get install -y tini
44

5-
WORKDIR /app
6-
7-
COPY signal ./signal
8-
95
WORKDIR /app/signal
106

7+
COPY signal/package*.json ./
118
RUN npm install
9+
10+
COPY signal .
1211
RUN npm run build
1312

1413
CMD ["tini", "--", "npm", "run", "start:prod"]

backend/Dockerfile.was

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -2,13 +2,12 @@ FROM node:20
22

33
RUN apt-get update && apt-get install -y tini
44

5-
WORKDIR /app
6-
7-
COPY was ./was
8-
95
WORKDIR /app/was
106

7+
COPY was/package*.json ./
118
RUN npm install
9+
10+
COPY was .
1211
RUN npm run build
1312

1413
CMD ["tini", "--", "npm", "run", "start:prod"]

backend/compose.blue-build.yml

Lines changed: 37 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,37 @@
1+
version: "3.3"
2+
3+
services:
4+
was-blue:
5+
container_name: "was-blue"
6+
build:
7+
context: .
8+
dockerfile: Dockerfile.was
9+
env_file: .env
10+
environment:
11+
- PORT=3000
12+
expose:
13+
- "3000"
14+
volumes:
15+
- /var/log/was:/app/was/logs
16+
- /var/log/ormlogs.log:/app/was/ormlogs.log
17+
networks:
18+
- backend
19+
image: "${DOCKER_USERNAME}/magicconch:was-blue-${GITHUB_SHA}"
20+
21+
signal-blue:
22+
container_name: "signal-blue"
23+
build:
24+
context: .
25+
dockerfile: Dockerfile.signal
26+
environment:
27+
- PORT=3001
28+
expose:
29+
- "3001"
30+
networks:
31+
- backend
32+
image: "${DOCKER_USERNAME}/magicconch:signal-blue-${GITHUB_SHA}"
33+
34+
networks:
35+
backend:
36+
external: true
37+
name: backend

backend/docker-compose.blue.yml renamed to backend/compose.blue-deploy.yml

Lines changed: 16 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -4,40 +4,29 @@ services:
44
was-blue:
55
image: "${DOCKER_USERNAME}/magicconch:was-blue-${GITHUB_SHA}"
66
container_name: "was-blue"
7-
build:
8-
context: .
9-
dockerfile: Dockerfile.was
7+
env_file: .env
108
environment:
11-
- DB_PORT=${DB_PORT}
12-
- DB_HOST=${DB_HOST}
13-
- DB_USERNAME=${DB_USERNAME}
14-
- DB_PASSWORD=${DB_PASSWORD}
15-
- DB_DATABASE=${DB_DATABASE}
16-
- ACCESS_KEY_ID=${ACCESS_KEY_ID}
17-
- SECRET_KEY=${SECRET_KEY}
18-
- X_NCP_CLOVASTUDIO_API_KEY=${X_NCP_CLOVASTUDIO_API_KEY}
19-
- X_NCP_APIGW_API_KEY=${X_NCP_APIGW_API_KEY}
209
- PORT=3000
21-
- SENTRY_DSN=${SENTRY_DSN}
2210
expose:
2311
- "3000"
2412
volumes:
2513
- /var/log/was:/app/was/logs
26-
- /var/log/typeorm:/app/was/typeorm.log
14+
- /var/log/ormlogs.log:/app/was/ormlogs.log
15+
networks:
16+
- backend
2717

2818
signal-blue:
2919
image: "${DOCKER_USERNAME}/magicconch:signal-blue-${GITHUB_SHA}"
3020
container_name: "signal-blue"
31-
build:
32-
context: .
33-
dockerfile: Dockerfile.signal
3421
environment:
3522
- PORT=3001
3623
expose:
3724
- "3001"
25+
networks:
26+
- backend
3827

3928
nginx:
40-
container_name: "nginx-reverse-proxy"
29+
container_name: "nginx"
4130
build:
4231
context: .
4332
dockerfile: Dockerfile.nginx
@@ -50,10 +39,19 @@ services:
5039
- certbot
5140
volumes:
5241
- /var/log/nginx:/var/log/nginx
42+
networks:
43+
- backend
5344

5445
certbot:
5546
image: certbot/certbot
5647
volumes:
5748
- /etc/letsencrypt
5849
- /var/www/html:/var/www/html
50+
networks:
51+
- backend
5952
command: certonly --webroot --webroot-path=/var/www/html -d was.tarotmilktea.com
53+
54+
networks:
55+
backend:
56+
external: true
57+
name: backend

backend/compose.green-build.yml

Lines changed: 37 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,37 @@
1+
version: "3.3"
2+
3+
services:
4+
was-green:
5+
container_name: "was-green"
6+
build:
7+
context: .
8+
dockerfile: Dockerfile.was
9+
env_file: .env
10+
environment:
11+
- PORT=3002
12+
expose:
13+
- "3002"
14+
volumes:
15+
- /var/log/was:/app/was/logs
16+
- /var/log/ormlogs.log:/app/was/ormlogs.log
17+
networks:
18+
- backend
19+
image: "${DOCKER_USERNAME}/magicconch:was-green-${GITHUB_SHA}"
20+
21+
signal-green:
22+
container_name: "signal-green"
23+
build:
24+
context: .
25+
dockerfile: Dockerfile.signal
26+
environment:
27+
- PORT=3003
28+
expose:
29+
- "3003"
30+
networks:
31+
- backend
32+
image: "${DOCKER_USERNAME}/magicconch:signal-green-${GITHUB_SHA}"
33+
34+
networks:
35+
backend:
36+
external: true
37+
name: backend

backend/docker-compose.green.yml renamed to backend/compose.green-deploy.yml

Lines changed: 16 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -4,40 +4,29 @@ services:
44
was-green:
55
image: "${DOCKER_USERNAME}/magicconch:was-green-${GITHUB_SHA}"
66
container_name: "was-green"
7-
build:
8-
context: .
9-
dockerfile: Dockerfile.was
7+
env_file: .env
108
environment:
11-
- DB_PORT=${DB_PORT}
12-
- DB_HOST=${DB_HOST}
13-
- DB_USERNAME=${DB_USERNAME}
14-
- DB_PASSWORD=${DB_PASSWORD}
15-
- DB_DATABASE=${DB_DATABASE}
16-
- ACCESS_KEY_ID=${ACCESS_KEY_ID}
17-
- SECRET_KEY=${SECRET_KEY}
18-
- X_NCP_CLOVASTUDIO_API_KEY=${X_NCP_CLOVASTUDIO_API_KEY}
19-
- X_NCP_APIGW_API_KEY=${X_NCP_APIGW_API_KEY}
209
- PORT=3002
21-
- SENTRY_DSN=${SENTRY_DSN}
2210
expose:
2311
- "3002"
2412
volumes:
2513
- /var/log/was:/app/was/logs
26-
- /var/log/typeorm:/app/was/typeorm.log
14+
- /var/log/ormlogs.log:/app/was/ormlogs.log
15+
networks:
16+
- backend
2717

2818
signal-green:
2919
image: "${DOCKER_USERNAME}/magicconch:signal-green-${GITHUB_SHA}"
3020
container_name: "signal-green"
31-
build:
32-
context: .
33-
dockerfile: Dockerfile.signal
3421
environment:
3522
- PORT=3003
3623
expose:
3724
- "3003"
25+
networks:
26+
- backend
3827

3928
nginx:
40-
container_name: "nginx-reverse-proxy"
29+
container_name: "nginx"
4130
build:
4231
context: .
4332
dockerfile: Dockerfile.nginx
@@ -50,10 +39,19 @@ services:
5039
- certbot
5140
volumes:
5241
- /var/log/nginx:/var/log/nginx
42+
networks:
43+
- backend
5344

5445
certbot:
5546
image: certbot/certbot
5647
volumes:
5748
- /etc/letsencrypt
5849
- /var/www/html:/var/www/html
50+
networks:
51+
- backend
5952
command: certonly --webroot --webroot-path=/var/www/html -d was.tarotmilktea.com
53+
54+
networks:
55+
backend:
56+
external: true
57+
name: backend

0 commit comments

Comments
 (0)