-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathdocker-compose-prod.yml
More file actions
154 lines (142 loc) · 3.92 KB
/
docker-compose-prod.yml
File metadata and controls
154 lines (142 loc) · 3.92 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
147
148
149
150
151
152
153
154
services:
app:
image: shawn9272/cuk-compasser:${IMAGE_TAG}
container_name: cuk-compasser-service
restart: always
ports:
- "8080:8080"
env_file: .env
environment:
- DB_HOST=mysql-db
- DB_NAME=${DB_NAME}
- DB_USERNAME=${DB_USERNAME}
- DB_PASSWORD=${DB_PASSWORD}
- S3_BUCKET_NAME=${S3_BUCKET_NAME}
- AWS_ACCESS_KEY=${AWS_ACCESS_KEY}
- AWS_SECRET_KEY=${AWS_SECRET_KEY}
- SPRING_PROFILES_ACTIVE=prod
# application.yml의 변수명(${SPRING_DATA_REDIS_HOST})과 일치시킴
- SPRING_DATA_REDIS_HOST=redis
- SPRING_DATA_REDIS_PORT=6379
# JWT 및 카카오 설정 (환경변수로 주입)
- JWT_SECRET_KEY=${JWT_SECRET_KEY}
- KAKAO_CLIENT_ID=${KAKAO_CLIENT_ID}
- KAKAO_LOGIN_REDIRECT_URI=${KAKAO_LOGIN_REDIRECT_URI}
- KAKAO_LOCAL_BASE_URL=https://dapi.kakao.com
- KAKAO_REST_API_KEY=${KAKAO_REST_API_KEY}
- JAVA_TOOL_OPTIONS=-Xms256m -Xmx256m
depends_on:
mysql-db:
condition: service_healthy
redis:
condition: service_started
logging:
driver: "json-file"
options:
max-size: "10m"
max-file: "3"
volumes:
- ./logs:/app/logs
networks:
- cuk-compasser-net
deploy:
resources:
limits:
memory: 400M
redis:
image: redis:latest
container_name: redis
restart: always
ports:
- "6379:6379"
networks:
- cuk-compasser-net
mysql-db:
image: mysql:latest
container_name: mysql-db
restart: always
env_file: .env
environment:
- MYSQL_ROOT_PASSWORD=${MYSQL_ROOT_PASSWORD}
- MYSQL_DATABASE=${MYSQL_DATABASE}
- MYSQL_USER=${MYSQL_USER}
- MYSQL_PASSWORD=${MYSQL_PASSWORD}
ports:
- "3306:3306"
volumes:
- mysql_data:/var/lib/mysql
networks:
- cuk-compasser-net
healthcheck:
test: [ "CMD-SHELL", "mysqladmin ping -h localhost -u $$MYSQL_USER -p$$MYSQL_PASSWORD" ]
interval: 10s
timeout: 5s
retries: 5
start_period: 30s
command:
- --innodb_buffer_pool_size=128M # 데이터를 램에 올려두는 캐시 공간을 128MB로 제한
- --max_connections=50 # 동시 접속자(커넥션) 수 50개로 제한
deploy:
resources:
limits:
memory: 300M # 컨테이너 전체 메모리 상한선
prometheus:
image: prom/prometheus:latest
container_name: prometheus
restart: always
ports:
- "19090:9090"
volumes:
- ./prometheus/prometheus-prod.yml:/etc/prometheus/prometheus.yml
- prometheus_data:/prometheus
networks:
- cuk-compasser-net
grafana:
image: grafana/grafana:latest
container_name: grafana
restart: always
ports:
- "3000:3000"
environment:
- GF_SECURITY_ADMIN_PASSWORD=${GF_SECURITY_ADMIN_PASSWORD}
- GF_SERVER_DOMAIN=compasser.site
- GF_SERVER_PROTOCOL=http
- GF_SERVER_ROOT_URL=https://compasser.site/grafana/
- GF_SERVER_SERVE_FROM_SUB_PATH=true
volumes:
- grafana_data:/var/lib/grafana
depends_on:
- prometheus
networks:
- cuk-compasser-net
loki:
image: grafana/loki:latest
container_name: loki
restart: always
ports:
- "3100:3100"
volumes:
- loki_data:/loki
command: -config.file=/etc/loki/local-config.yaml
networks:
- cuk-compasser-net
promtail:
image: grafana/promtail:latest
container_name: promtail
restart: always
volumes:
- ./promtail/promtail-config.yml:/etc/promtail/config.yml
- ./logs:/var/log/spring-app:ro
- /var/lib/docker/containers:/var/lib/docker/containers:ro
- /var/run/docker.sock:/var/run/docker.sock
command: -config.file=/etc/promtail/config.yml
networks:
- cuk-compasser-net
volumes:
mysql_data:
prometheus_data:
grafana_data:
loki_data:
networks:
cuk-compasser-net:
external: true