-
Notifications
You must be signed in to change notification settings - Fork 1
Expand file tree
/
Copy pathdocker-compose.yml
More file actions
94 lines (79 loc) · 2.38 KB
/
Copy pathdocker-compose.yml
File metadata and controls
94 lines (79 loc) · 2.38 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
85
86
87
88
89
90
91
92
93
94
services:
mysql:
image: mysql:8.0
container_name: peaktime-mysql
restart: unless-stopped
environment:
MYSQL_DATABASE: ${MYSQL_DATABASE}
MYSQL_USER: ${MYSQL_USER}
MYSQL_PASSWORD: ${MYSQL_PASSWORD}
MYSQL_ROOT_PASSWORD: ${MYSQL_ROOT_PASSWORD}
TZ: Asia/Seoul
ports:
- "${MYSQL_PORT:-3306}:3306"
volumes:
- mysql-data:/var/lib/mysql
command: >
--character-set-server=utf8mb4
--collation-server=utf8mb4_0900_ai_ci
# MySQL 체크
healthcheck:
test: [ "CMD", "mysqladmin" ,"ping", "-h", "localhost" ]
interval: 10s
timeout: 5s
retries: 5
redis:
image: redis:7-alpine
container_name: peaktime-redis
restart: unless-stopped
ports:
- "${REDIS_PORT:-6379}:6379"
volumes:
- redis-data:/data
command: [ "redis-server", "--appendonly", "yes" ]
# Redis 체크
healthcheck:
test: [ "CMD", "redis-cli", "ping" ]
interval: 10s
timeout: 5s
retries: 5
# 스프링 부트 서버
application:
container_name: peaktime-app
image: ${DOCKER_USERNAME}/peak-time:latest
restart: unless-stopped
ports:
- "8080:8080"
expose:
- "9091"
# CD에서 생성한 .env를 컨테이너 환경변수로 로드
env_file:
- .env
environment:
SPRING_DATASOURCE_URL: jdbc:mysql://mysql:3306/${MYSQL_DATABASE}?useSSL=false&allowPublicKeyRetrieval=true&characterEncoding=UTF-8&serverTimezone=Asia/Seoul
SPRING_DATASOURCE_USERNAME: ${MYSQL_USER}
SPRING_DATASOURCE_PASSWORD: ${MYSQL_PASSWORD}
DB_DDL_AUTO: ${DB_DDL_AUTO:-update}
SPRING_PROFILES_ACTIVE: ${SPRING_PROFILES_ACTIVE:-prod}
MANAGEMENT_SERVER_PORT: "9091"
BASE_URL: ${BASE_URL}
SPRING_REDIS_HOST: ${SPRING_REDIS_HOST}
SPRING_REDIS_PORT: ${SPRING_REDIS_PORT}
JWT_SECRET_KEY: ${JWT_SECRET_KEY}
AWS_S3_BUCKET: ${AWS_S3_BUCKET}
TOSS_CLIENT_KEY: ${TOSS_CLIENT_KEY}
TOSS_SECRET_KEY: ${TOSS_SECRET_KEY}
GMAIL_ID: ${GMAIL_ID}
SMTP_PASSWORD: ${SMTP_PASSWORD}
KAKAO_CLIENT_ID: ${KAKAO_CLIENT_ID}
KAKAO_CLIENT_SECRET: ${KAKAO_CLIENT_SECRET}
GOOGLE_CLIENT_ID: ${GOOGLE_CLIENT_ID}
GOOGLE_CLIENT_SECRET: ${GOOGLE_CLIENT_SECRET}
depends_on:
mysql:
condition: service_healthy
redis:
condition: service_healthy
volumes:
mysql-data:
redis-data: