Skip to content

Commit 4a50fb3

Browse files
committed
deploy: rollback compose mysql
1 parent 9833d60 commit 4a50fb3

3 files changed

Lines changed: 14 additions & 50 deletions

File tree

.github/workflows/deploy.yml

Lines changed: 9 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -28,11 +28,10 @@ jobs:
2828
- name: Prepare deploy files
2929
env:
3030
SPRING_APPLICATION_NAME: ${{ secrets.SPRING_APPLICATION_NAME }}
31+
SPRING_DATASOURCE_URL: ${{ secrets.SPRING_DATASOURCE_URL }}
3132
SPRING_DATASOURCE_USERNAME: ${{ secrets.SPRING_DATASOURCE_USERNAME }}
3233
SPRING_DATASOURCE_PASSWORD: ${{ secrets.SPRING_DATASOURCE_PASSWORD }}
3334
SPRING_DATASOURCE_DRIVER_CLASS_NAME: ${{ secrets.SPRING_DATASOURCE_DRIVER_CLASS_NAME }}
34-
MYSQL_DATABASE: ${{ secrets.MYSQL_DATABASE }}
35-
MYSQL_ROOT_PASSWORD: ${{ secrets.MYSQL_ROOT_PASSWORD }}
3635
SPRING_JPA_DATABASE_PLATFORM: ${{ secrets.SPRING_JPA_DATABASE_PLATFORM }}
3736
SPRING_JPA_HIBERNATE_DDL_AUTO: ${{ secrets.SPRING_JPA_HIBERNATE_DDL_AUTO }}
3837
JWT_SECRETKEY: ${{ secrets.JWT_SECRETKEY }}
@@ -65,21 +64,20 @@ jobs:
6564
APPLE_TEAM_ID: ${{ secrets.APPLE_TEAM_ID }}
6665
FEATURE_APPLE_LOGIN_ENABLED: ${{ secrets.FEATURE_APPLE_LOGIN_ENABLED }}
6766
AUTHKEY_743M7R5W3W: ${{ secrets.AUTHKEY_743M7R5W3W }}
67+
SPRING_FLYWAY_URL: ${{ secrets.SPRING_FLYWAY_URL }}
68+
SPRING_FLYWAY_USER: ${{ secrets.SPRING_FLYWAY_USER }}
69+
SPRING_FLYWAY_PASSWORD: ${{ secrets.SPRING_FLYWAY_PASSWORD }}
6870
ONTIME_PUSH_FIREBASE_ADMINSDK: ${{ secrets.ONTIME_PUSH_FIREBASE_ADMINSDK }}
6971
run: |
7072
mkdir -p config secrets
7173
72-
mysql_database="${MYSQL_DATABASE:-ontime}"
73-
mysql_root_password="${MYSQL_ROOT_PASSWORD:-$SPRING_DATASOURCE_PASSWORD}"
74-
mysql_url="jdbc:mysql://mysql:3306/${mysql_database}?serverTimezone=Asia/Seoul&useSSL=false&allowPublicKeyRetrieval=true"
75-
7674
add_property() {
7775
printf '%s=%s\n' "$1" "$2" >> config/application.properties
7876
}
7977
8078
: > config/application.properties
8179
add_property "spring.application.name" "$SPRING_APPLICATION_NAME"
82-
add_property "spring.datasource.url" "$mysql_url"
80+
add_property "spring.datasource.url" "$SPRING_DATASOURCE_URL"
8381
add_property "spring.datasource.username" "$SPRING_DATASOURCE_USERNAME"
8482
add_property "spring.datasource.password" "$SPRING_DATASOURCE_PASSWORD"
8583
add_property "spring.datasource.driver-class-name" "$SPRING_DATASOURCE_DRIVER_CLASS_NAME"
@@ -117,22 +115,15 @@ jobs:
117115
add_property "apple.team.id" "$APPLE_TEAM_ID"
118116
add_property "feature.apple-login.enabled" "${FEATURE_APPLE_LOGIN_ENABLED:-true}"
119117
add_property "spring.flyway.enabled" "true"
120-
add_property "spring.flyway.url" "$mysql_url"
121-
add_property "spring.flyway.user" "$SPRING_DATASOURCE_USERNAME"
122-
add_property "spring.flyway.password" "$SPRING_DATASOURCE_PASSWORD"
118+
add_property "spring.flyway.url" "$SPRING_FLYWAY_URL"
119+
add_property "spring.flyway.user" "$SPRING_FLYWAY_USER"
120+
add_property "spring.flyway.password" "$SPRING_FLYWAY_PASSWORD"
123121
add_property "spring.flyway.baseline-on-migrate" "true"
124122
add_property "management.endpoints.web.exposure.include" "health"
125123
add_property "management.endpoint.health.show-details" "always"
126124
add_property "server.forward-headers-strategy" "framework"
127125
add_property "firebase.service-account.path" "/app/secrets/firebase-adminsdk.json"
128126
129-
{
130-
printf 'MYSQL_DATABASE=%s\n' "$mysql_database"
131-
printf 'MYSQL_USER=%s\n' "$SPRING_DATASOURCE_USERNAME"
132-
printf 'MYSQL_PASSWORD=%s\n' "$SPRING_DATASOURCE_PASSWORD"
133-
printf 'MYSQL_ROOT_PASSWORD=%s\n' "$mysql_root_password"
134-
} > config/mysql.env
135-
136127
printf '%s' "$ONTIME_PUSH_FIREBASE_ADMINSDK" > secrets/firebase-adminsdk.json
137128
printf '%s' "$AUTHKEY_743M7R5W3W" > secrets/AuthKey_743M7R5W3W.p8
138129
cp ontime-back/build/libs/ontime-back-0.0.1-SNAPSHOT.jar project.jar
@@ -145,7 +136,7 @@ jobs:
145136
host: ${{ secrets.EC2_HOST }}
146137
username: ${{ secrets.EC2_USER }}
147138
key: ${{ secrets.EC2_SSH_KEY }}
148-
source: "project.jar,Dockerfile,docker-compose.yml,config/application.properties,config/mysql.env,secrets/firebase-adminsdk.json,secrets/AuthKey_743M7R5W3W.p8"
139+
source: "project.jar,Dockerfile,docker-compose.yml,config/application.properties,secrets/firebase-adminsdk.json,secrets/AuthKey_743M7R5W3W.p8"
149140
target: "/home/ubuntu/OnTime-back"
150141

151142
- name: Restart service on EC2

ontime-back/docker-compose.yml

Lines changed: 0 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -1,38 +1,14 @@
11
services:
2-
mysql:
3-
image: mysql:8.0
4-
container_name: ontime-mysql
5-
restart: unless-stopped
6-
env_file:
7-
- ./config/mysql.env
8-
command:
9-
- --character-set-server=utf8mb4
10-
- --collation-server=utf8mb4_unicode_ci
11-
volumes:
12-
- mysql-data:/var/lib/mysql
13-
healthcheck:
14-
test: ["CMD-SHELL", "mysqladmin ping -h localhost -u root -p$$MYSQL_ROOT_PASSWORD"]
15-
interval: 10s
16-
timeout: 5s
17-
retries: 10
18-
192
backend:
203
build:
214
context: .
225
dockerfile: Dockerfile
236
image: ontime-backend
247
container_name: ontime-backend
258
restart: unless-stopped
26-
depends_on:
27-
mysql:
28-
condition: service_healthy
299
ports:
3010
- "8080:8080"
3111
volumes:
3212
- ./config/application.properties:/app/config/application.properties:ro
3313
- ./secrets/firebase-adminsdk.json:/app/secrets/firebase-adminsdk.json:ro
3414
- ./secrets/AuthKey_743M7R5W3W.p8:/app/secrets/AuthKey_743M7R5W3W.p8:ro
35-
36-
volumes:
37-
mysql-data:
38-
name: ontime-mysql-data

ontime-back/docs/deployment/ec2.md

Lines changed: 5 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@ This service deploys to Amazon EC2 through `.github/workflows/deploy.yml`.
88
2. Add the required GitHub Actions secrets listed below.
99
3. Run the `Deploy` workflow manually from GitHub Actions, or push to the `deploy` branch.
1010

11-
The workflow builds the Spring Boot jar, creates deploy-only config files from GitHub Secrets, uploads them to `/home/ubuntu/OnTime-back`, and restarts Docker Compose on the EC2 instance. Docker Compose runs both the backend and a private MySQL 8 container on the same Docker network.
11+
The workflow builds the Spring Boot jar, creates deploy-only config files from GitHub Secrets, uploads them to `/home/ubuntu/OnTime-back`, and restarts Docker Compose on the EC2 instance.
1212

1313
## Required EC2 Secrets
1414

@@ -19,11 +19,11 @@ The workflow builds the Spring Boot jar, creates deploy-only config files from G
1919
## Required Application Secrets
2020

2121
- `SPRING_APPLICATION_NAME`
22+
- `SPRING_DATASOURCE_URL`
2223
- `SPRING_DATASOURCE_USERNAME`
2324
- `SPRING_DATASOURCE_PASSWORD`
2425
- `SPRING_DATASOURCE_DRIVER_CLASS_NAME`
2526
- `SPRING_JPA_HIBERNATE_DDL_AUTO`
26-
- `MYSQL_ROOT_PASSWORD`
2727
- `JWT_SECRETKEY`
2828
- `JWT_ACCESS_EXPIRATION`
2929
- `JWT_REFRESH_EXPIRATION`
@@ -35,12 +35,14 @@ The workflow builds the Spring Boot jar, creates deploy-only config files from G
3535
- `APPLE_LOGIN_KEY`
3636
- `APPLE_TEAM_ID`
3737
- `AUTHKEY_743M7R5W3W`
38+
- `SPRING_FLYWAY_URL`
39+
- `SPRING_FLYWAY_USER`
40+
- `SPRING_FLYWAY_PASSWORD`
3841
- `ONTIME_PUSH_FIREBASE_ADMINSDK`
3942

4043
## Optional Secrets
4144

4245
- `SPRING_JPA_DATABASE_PLATFORM` defaults to `org.hibernate.dialect.MySQL8Dialect`.
43-
- `MYSQL_DATABASE` defaults to `ontime`.
4446
- `FEATURE_APPLE_LOGIN_ENABLED` defaults to `true`.
4547
- Google and Kakao OAuth provider/registration secrets are included by the workflow when configured.
4648

@@ -52,12 +54,7 @@ The deploy workflow writes these files under `/home/ubuntu/OnTime-back`:
5254
- `Dockerfile`
5355
- `docker-compose.yml`
5456
- `config/application.properties`
55-
- `config/mysql.env`
5657
- `secrets/firebase-adminsdk.json`
5758
- `secrets/AuthKey_743M7R5W3W.p8`
5859

59-
MySQL data is stored in the Docker volume `ontime-mysql-data`. Normal deploys run `docker compose down` without `-v`, so this volume is preserved across backend redeploys. Removing that volume deletes the deployed database.
60-
61-
Keep `SPRING_JPA_HIBERNATE_DDL_AUTO` set to `validate` or another non-destructive value for production. Values such as `create` or `create-drop` can recreate schema and destroy data.
62-
6360
Do not commit local `application.properties`, Firebase service account JSON, Apple `.p8` keys, or `.env` files.

0 commit comments

Comments
 (0)