Skip to content

Commit 27a778b

Browse files
committed
infra: db migration from rds to internal docker images
1 parent 2c020f2 commit 27a778b

File tree

4 files changed

+85
-8
lines changed

4 files changed

+85
-8
lines changed

.github/workflows/cicd-prod.yml

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -74,6 +74,9 @@ jobs:
7474
script: |
7575
sudo docker login -u ${{ secrets.DOCKER_USERNAME }} -p ${{ secrets.DOCKER_PASSWORD }}
7676
sudo docker pull ${{ secrets.DOCKER_USERNAME }}/${{ secrets.DOCKER_REPO }}:prod
77+
export DB_USERNAME='${{ secrets.DB_USERNAME }}'
78+
export DB_PASSWORD='${{ secrets.DB_PASSWORD }}'
79+
export DB_ROOT_PASSWORD='${{ secrets.DB_ROOT_PASSWORD }}'
7780
chmod 777 ./scripts/deploy-prod.sh
7881
cp ./scripts/deploy-prod.sh ./deploy-prod.sh
7982
./deploy-prod.sh

docker-compose-dev.yml

Lines changed: 38 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -11,10 +11,16 @@ services:
1111
- TZ=Asia/Seoul
1212
- AWS_ACCESS_KEY_ID=${AWS_ACCESS_KEY_ID}
1313
- AWS_SECRET_ACCESS_KEY=${AWS_SECRET_ACCESS_KEY}
14-
- REDIS_HOST=redis
15-
- REDIS_PORT=6379
14+
- SPRING_DATA_REDIS_HOST=redis
15+
- SPRING_DATA_REDIS_PORT=6379
16+
- SPRING_DATASOURCE_URL=jdbc:mariadb://mariadb:3306/dobby_dev
17+
- SPRING_DATASOURCE_USERNAME=${DB_USERNAME}
18+
- SPRING_DATASOURCE_PASSWORD=${DB_PASSWORD}
1619
depends_on:
17-
- redis
20+
mariadb:
21+
condition: service_healthy
22+
redis:
23+
condition: service_started
1824
green:
1925
container_name: green
2026
image: gradmeet/dobby:dev
@@ -26,12 +32,38 @@ services:
2632
- TZ=Asia/Seoul
2733
- AWS_ACCESS_KEY_ID=${AWS_ACCESS_KEY_ID}
2834
- AWS_SECRET_ACCESS_KEY=${AWS_SECRET_ACCESS_KEY}
29-
- REDIS_HOST=redis
30-
- REDIS_PORT=6379
35+
- SPRING_DATA_REDIS_HOST=redis
36+
- SPRING_DATA_REDIS_PORT=6379
37+
- SPRING_DATASOURCE_URL=jdbc:mariadb://mariadb:3306/dobby_dev
38+
- SPRING_DATASOURCE_USERNAME=${DB_USERNAME}
39+
- SPRING_DATASOURCE_PASSWORD=${DB_PASSWORD}
3140
depends_on:
32-
- redis
41+
mariadb:
42+
condition: service_healthy
43+
redis:
44+
condition: service_started
3345
redis:
3446
container_name: dobby-redis
3547
image: redis:7-alpine
3648
command: [ "redis-server", "--appendonly", "yes" ]
3749
restart: unless-stopped
50+
mariadb:
51+
container_name: dobby-mariadb
52+
image: mariadb:11
53+
restart: unless-stopped
54+
environment:
55+
- TZ=Asia/Seoul
56+
- MARIADB_DATABASE=dobby_dev
57+
- MARIADB_USER=${DB_USERNAME}
58+
- MARIADB_PASSWORD=${DB_PASSWORD}
59+
- MARIADB_ROOT_PASSWORD=${DB_ROOT_PASSWORD}
60+
volumes:
61+
- mariadb-data:/var/lib/mysql
62+
healthcheck:
63+
test: ["CMD-SHELL", "mariadb-admin ping -h 127.0.0.1 -u root -p$${MARIADB_ROOT_PASSWORD} --silent"]
64+
interval: 10s
65+
timeout: 5s
66+
retries: 12
67+
volumes:
68+
mariadb-data:
69+
redis-data:

docker-compose-prod.yml

Lines changed: 34 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -13,8 +13,14 @@ services:
1313
- AWS_SECRET_ACCESS_KEY=${AWS_SECRET_ACCESS_KEY}
1414
- SPRING_DATA_REDIS_HOST=redis
1515
- SPRING_DATA_REDIS_PORT=6379
16+
- SPRING_DATASOURCE_URL=jdbc:mariadb://mariadb:3306/dobby_prod
17+
- SPRING_DATASOURCE_USERNAME=${DB_USERNAME}
18+
- SPRING_DATASOURCE_PASSWORD=${DB_PASSWORD}
1619
depends_on:
17-
- redis
20+
mariadb:
21+
condition: service_healthy
22+
redis:
23+
condition: service_started
1824
green:
1925
container_name: green
2026
image: gradmeet/dobby:prod
@@ -28,10 +34,36 @@ services:
2834
- AWS_SECRET_ACCESS_KEY=${AWS_SECRET_ACCESS_KEY}
2935
- SPRING_DATA_REDIS_HOST=redis
3036
- SPRING_DATA_REDIS_PORT=6379
37+
- SPRING_DATASOURCE_URL=jdbc:mariadb://mariadb:3306/dobby_prod
38+
- SPRING_DATASOURCE_USERNAME=${DB_USERNAME}
39+
- SPRING_DATASOURCE_PASSWORD=${DB_PASSWORD}
3140
depends_on:
32-
- redis
41+
mariadb:
42+
condition: service_healthy
43+
redis:
44+
condition: service_started
3345
redis:
3446
container_name: dobby-redis
3547
image: redis:7-alpine
3648
command: ["redis-server", "--appendonly", "yes"]
3749
restart: unless-stopped
50+
mariadb:
51+
container_name: dobby-mariadb
52+
image: mariadb:11
53+
restart: unless-stopped
54+
environment:
55+
- TZ=Asia/Seoul
56+
- MARIADB_DATABASE=dobby_prod
57+
- MARIADB_USER=${DB_USERNAME}
58+
- MARIADB_PASSWORD=${DB_PASSWORD}
59+
- MARIADB_ROOT_PASSWORD=${DB_ROOT_PASSWORD}
60+
volumes:
61+
- mariadb-data:/var/lib/mysql
62+
healthcheck:
63+
test: ["CMD-SHELL", "mariadb-admin ping -h 127.0.0.1 -u root -p$${MARIADB_ROOT_PASSWORD} --silent"]
64+
interval: 10s
65+
timeout: 5s
66+
retries: 12
67+
volumes:
68+
mariadb-data:
69+
redis-data:

scripts/deploy-prod.sh

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,14 @@
11
#!/bin/bash
2+
set -e
3+
4+
# full dump from rds import
5+
if [ ! -f /home/ubuntu/.db_imported ]; then
6+
echo ">>> importing dump into mariadb (one-time)"
7+
docker exec -i dobby-mariadb mariadb -u root -p"$DB_ROOT_PASSWORD" < /home/ubuntu/dobby_prod_dump.sql
8+
touch /home/ubuntu/.db_imported
9+
echo ">>> dump import done"
10+
fi
11+
# --- end DB bootstrap ---
212

313
IS_GREEN_EXIST=$(docker ps | grep green)
414

0 commit comments

Comments
 (0)