Repository navigation
Expand file tree
/
Copy pathdocker-compose.dev.yml
More file actions
75 lines (74 loc) · 2.77 KB
/
Copy pathdocker-compose.dev.yml
File metadata and controls
75 lines (74 loc) · 2.77 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
services:
app:
# 배포 워크플로가 커밋 단위 불변 태그(sha-xxxxxxx)를 /home/ubuntu/.env 에 기록한다.
image: ghcr.io/think-grow-studio/develop-one-question-api:${IMAGE_TAG:-latest}
container_name: one-question-api
restart: unless-stopped
# graceful shutdown 예산(웹 25s + 스케줄러 20s)보다 길어야 한다.
# Docker 기본값 10s 로는 드레이닝이 끝나기 전에 SIGKILL 이 날아간다.
stop_grace_period: 60s
mem_limit: 700m
ports:
- "8081:8081"
volumes:
- /home/ubuntu/log-one:/root/log-one
- /home/ubuntu/heapdump:/app/logs
logging:
driver: json-file
options:
max-size: "50m"
max-file: "10"
healthcheck:
test: ["CMD-SHELL", "bash -c 'exec 3<>/dev/tcp/127.0.0.1/8080'"]
interval: 30s
timeout: 10s
retries: 5
start_period: 40s
environment:
SPRING_PROFILES_ACTIVE: dev
ORACLE_DB_DRIVER: ${ORACLE_DB_DRIVER}
ORACLE_DB_URL: ${ORACLE_DB_URL}
ORACLE_DB_USERNAME: ${ORACLE_DB_USERNAME}
ORACLE_DB_PASSWORD: ${ORACLE_DB_PASSWORD}
ORACLE_DB_DIALECT: ${ORACLE_DB_DIALECT}
ORACLE_WALLET_BASE64: ${ORACLE_WALLET_BASE64}
JWT_SECRET_KEY: ${JWT_SECRET_KEY}
JWT_ACCESS_EXPIRE_TIME: ${JWT_ACCESS_EXPIRE_TIME}
JWT_REFRESH_EXPIRE_TIME: ${JWT_REFRESH_EXPIRE_TIME}
APP_VERSION_MIN: ${APP_VERSION_MIN}
APP_VERSION_LATEST: ${APP_VERSION_LATEST}
APP_SERVER_LIVE: ${APP_SERVER_LIVE}
GOOGLE_WEB_CLIENT_ID: ${GOOGLE_WEB_CLIENT_ID}
DISCORD_LOGGING_WEBHOOK_URL: ${DISCORD_LOGGING_WEBHOOK_URL}
ADMIN_EMAIL: ${ADMIN_EMAIL}
FIREBASE_SERVICE_ACCOUNT_JSON: ${FIREBASE_SERVICE_ACCOUNT_JSON}
APPLE_CLIENT_ID: ${APPLE_CLIENT_ID}
APPLE_TEAM_ID: ${APPLE_TEAM_ID}
APPLE_KEY_ID: ${APPLE_KEY_ID}
APPLE_PRIVATE_KEY: ${APPLE_PRIVATE_KEY}
AWS_REGION: ${AWS_REGION}
AWS_ACCESS_KEY_ID: ${AWS_ACCESS_KEY_ID}
AWS_SECRET_ACCESS_KEY: ${AWS_SECRET_ACCESS_KEY}
ANALYSIS_REPORT_QUEUE_URL: ${ANALYSIS_REPORT_QUEUE_URL}
nginx:
image: nginx:1.27-alpine
container_name: one-question-nginx
restart: unless-stopped
mem_limit: 128m
depends_on:
app:
condition: service_healthy
ports:
- "443:443"
- "80:80"
volumes:
# 파일 단위 바인드 마운트는 inode가 고정되어 scp로 파일이 교체돼도 컨테이너가 옛날 내용을
# 계속 보는 문제가 있어, 디렉토리 단위로 마운트 (경로 조회가 매번 새로 일어나 최신 파일을 봄)
- /home/ubuntu/nginx:/etc/nginx/conf.d:ro
- /home/ubuntu/certs:/etc/nginx/certs:ro
healthcheck:
test: ["CMD", "nc", "-z", "localhost", "443"]
interval: 30s
timeout: 10s
retries: 5
start_period: 20s