-
Notifications
You must be signed in to change notification settings - Fork 1
Expand file tree
/
Copy pathdocker-compose.prodtest.yml
More file actions
146 lines (135 loc) · 4.11 KB
/
docker-compose.prodtest.yml
File metadata and controls
146 lines (135 loc) · 4.11 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
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
version: '3.8'
services:
mysql_1:
image: mysql:8.0
container_name: mysql_1
restart: unless-stopped
environment:
MYSQL_ROOT_PASSWORD: 1234
TZ: Asia/Seoul
volumes:
- mysql_data:/var/lib/mysql
- mysql_config:/etc/mysql/conf.d
networks:
- common
ports:
- "3306:3306"
healthcheck:
test: ["CMD", "mysqladmin", "ping", "-h", "localhost", "-uroot", "-p1234"]
interval: 10s
timeout: 10s
retries: 50
start_period: 80s # ✅ 충분한 초기 대기 시간
command: --default-authentication-plugin=mysql_native_password
mysql_init:
image: mysql:latest
container_name: mysql_init
depends_on:
mysql_1:
condition: service_healthy
networks:
- common
environment:
MYSQL_PWD: 1234
command: >
bash -c "
echo 'MySQL 초기화 시작...'
mysql -h mysql_1 -uroot -p1234 -e \"
CREATE USER IF NOT EXISTS 'lldjlocal'@'127.0.0.1' IDENTIFIED WITH caching_sha2_password BY '1234';
CREATE USER IF NOT EXISTS 'lldjlocal'@'172.18.%.%' IDENTIFIED WITH caching_sha2_password BY '1234';
CREATE USER IF NOT EXISTS 'lldj'@'%' IDENTIFIED WITH caching_sha2_password BY '1234';
GRANT ALL PRIVILEGES ON *.* TO 'lldjlocal'@'127.0.0.1';
GRANT ALL PRIVILEGES ON *.* TO 'lldjlocal'@'172.18.%.%';
GRANT ALL PRIVILEGES ON *.* TO 'lldj'@'%';
CREATE DATABASE IF NOT EXISTS bid_market;
FLUSH PRIVILEGES;
\"
echo 'MySQL 초기화 완료!'
"
redis_1:
image: redis:latest
container_name: redis_1
restart: unless-stopped
command: redis-server --requirepass 1234
environment:
TZ: Asia/Seoul
volumes:
- redis_data:/data
networks:
- common
ports:
- "6379:6379"
healthcheck:
test: ["CMD", "redis-cli", "-a", "1234", "ping"]
interval: 5s
timeout: 3s
retries: 10
elasticsearch_1:
build:
context: .
dockerfile: elasticsearch.Dockerfile
container_name: elasticsearch_1
restart: unless-stopped
environment:
- discovery.type=single-node
- xpack.security.enabled=true
- xpack.security.transport.ssl.enabled=false
- xpack.security.http.ssl.enabled=false
- ELASTIC_PASSWORD=1234
- ES_JAVA_OPTS=-Xms512m -Xmx512m
- TZ=Asia/Seoul
volumes:
- elasticsearch_data:/usr/share/elasticsearch/data
networks:
- common
ports:
- "9200:9200"
healthcheck:
test: ["CMD-SHELL", "curl -s -u elastic:1234 http://localhost:9200/_cluster/health || exit 1"]
interval: 10s
timeout: 5s
retries: 30
app_1:
build:
context: .
dockerfile: Dockerfile
container_name: app_1
restart: unless-stopped
depends_on:
mysql_init:
condition: service_completed_successfully
redis_1:
condition: service_healthy
elasticsearch_1:
condition: service_healthy
environment:
# Spring Boot 설정
- SPRING_PROFILES_ACTIVE=prod
- TZ=Asia/Seoul
# 데이터베이스 설정
- SPRING__DATASOURCE__URL___DB_NAME=bid_market
# Redis 설정
- SPRING__DATA__REDIS__PASSWORD=1234
# JWT 설정
- JWT_SECRET=a1b2c3d4e5f6a1b2c3d4e5f6a1b2c3d4e5f6a1b2c3d4e5f6a1b2c3d4e5f6a1b2c3d4e5f6a1b2c3d4e5f6a1b2c3d4e5f6a1b2c3d4e5f6a1b2c3d4e5f6a1b2c3d4e5f6a1b2c3d4e5f6a1b2c3d4e5f6a1b2c3d4e5f6a1b2c3d4e5f6a1b2c3d4e5f6a1b2c3d4e5f6a1b2c3d4e5f6a1b2c3d4e5f6a1b2c3d4e5f6a1b2c3d4e5f6a1b2c3d4e5f6a1b2c3d4e5f6a1b2c3d4e5f6a1b2c3d4e5f6a1b2c3d4e5f6a1b2c3d4e5f6a1b2c3d4e5f6a1b2c3d4e5f6a1b2c3d4e5f6a1b2c3d4e5f6a1b2c3d4e5f6a1b2c3d4e5f6a1b2c3d4e5f6
- JWT_ACCESS_TOKEN_EXPIRATION=30
- JWT_REFRESH_TOKEN_EXPIRATION=7
# PG 설정 (필요시)
- PG_TOSS_CLIENT_KEY=${PG_TOSS_CLIENT_KEY:-test_client_key}
- PG_TOSS_SECRET_KEY=${PG_TOSS_SECRET_KEY:-test_secret_key}
networks:
- common
ports:
- "8080:8080"
volumes:
- app_data:/data
networks:
common:
driver: bridge
volumes:
mysql_data:
mysql_config:
redis_data:
elasticsearch_data:
elasticsearch_config:
app_data: