-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathdocker-compose.yml
More file actions
140 lines (123 loc) · 4.44 KB
/
Copy pathdocker-compose.yml
File metadata and controls
140 lines (123 loc) · 4.44 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
version: '3.8'
services:
# 1. Spring Boot App
app:
image: ${DOCKER_USERNAME}/where-you-ad-backend:latest
container_name: where-you-ad-backend
ports:
- "8080:8080" # Public EC2가 이 포트로 트래픽을 보냄
environment:
# ============================================================
# [추가] 앱 컨테이너 타임존
# 기존에는 mysqldb 서비스(82행)에만 TZ 가 지정되어 있어
# app 컨테이너 JVM 이 UTC 로 동작 중이었음
# Dockerfile 에도 ENV TZ 를 넣지만, 여기서 명시해두면
# 이미지 재빌드 없이 환경별로 덮어쓸 수 있음
# ============================================================
TZ: Asia/Seoul
# .env 파일의 변수명을 그대로 매핑
# 왼쪽: 스프링부트가 아는 이름 / 오른쪽: .env
SPRING_DATASOURCE_URL: ${DB_URL}
SPRING_DATASOURCE_USERNAME: ${DB_USERNAME}
SPRING_DATASOURCE_PASSWORD: ${DB_PASSWORD}
# Redis
SPRING_DATA_REDIS_HOST: ${REDIS_HOST}
SPRING_DATA_REDIS_PORT: ${REDIS_PORT}
# 기타 설정 (.env 그대로 통과)
MAIL_USERNAME: ${MAIL_USERNAME}
MAIL_PASSWORD: ${MAIL_PASSWORD}
NAVER_CLIENT_ID: ${NAVER_CLIENT_ID}
NAVER_CLIENT_SECRET: ${NAVER_CLIENT_SECRET}
GOOGLE_CLIENT_ID: ${GOOGLE_CLIENT_ID}
GOOGLE_CLIENT_SECRET: ${GOOGLE_CLIENT_SECRET}
KAKAO_CLIENT_ID: ${KAKAO_CLIENT_ID}
KAKAO_CLIENT_SECRET: ${KAKAO_CLIENT_SECRET}
JWT_SECRET: ${JWT_SECRET}
OAUTH2_REDIRECT_URL: ${OAUTH2_REDIRECT_URL}
BASE_URL: ${BASE_URL}
FRONTEND_URL: ${FRONTEND_URL}
SMS_API_KEY: ${SMS_API_KEY}
SMS_SECRET_KEY: ${SMS_SECRET_KEY}
SMS_SENDER_NUMBER: ${SMS_SENDER_NUMBER}
AWS_ACCESS_KEY: ${AWS_ACCESS_KEY}
AWS_SECRET_KEY: ${AWS_SECRET_KEY}
OPENAI_API_KEY: ${OPENAI_API_KEY}
AES_SECRET: ${AES_SECRET}
# Meta Marketing API
META_APP_ID: ${META_APP_ID}
META_APP_SECRET: ${META_APP_SECRET}
META_REDIRECT_URI: ${META_REDIRECT_URI}
META_FRONTEND_CALLBACK_URL: ${META_FRONTEND_CALLBACK_URL}
#Google Ads
GOOGLE_ADS_CLIENT_ID: ${GOOGLE_ADS_CLIENT_ID}
GOOGLE_ADS_CLIENT_SECRET: ${GOOGLE_ADS_CLIENT_SECRET}
GOOGLE_ADS_OAUTH2_REDIRECT_URL: ${GOOGLE_ADS_OAUTH2_REDIRECT_URL}
GOOGLE_ADS_DEVELOPER_TOKEN: ${GOOGLE_ADS_DEVELOPER_TOKEN}
GOOGLE_ADS_LOGIN_CUSTOMER_ID: ${GOOGLE_ADS_LOGIN_CUSTOMER_ID}
COOKIE_SECURE: ${COOKIE_SECURE}
COOKIE_DOMAIN: ${COOKIE_DOMAIN}
COOKIE_SAME_SITE: ${COOKIE_SAME_SITE}
# Kafka
KAFKA_BOOTSTRAP_SERVERS: ${KAFKA_BOOTSTRAP_SERVERS}
depends_on:
- mysqldb
- redis
- kafka
networks:
- where-you-ad-network
restart: always
# 2. MySQL
mysqldb:
image: mysql:8.0
container_name: where-you-ad-db
environment:
MYSQL_ROOT_PASSWORD: ${DB_PASSWORD}
MYSQL_DATABASE: whereyouad
MYSQL_USER: ${DB_USERNAME}
MYSQL_PASSWORD: ${DB_PASSWORD}
TZ: Asia/Seoul
command:
- --character-set-server=utf8mb4
- --collation-server=utf8mb4_unicode_ci
volumes:
- ./mysql/data:/var/lib/mysql
networks:
- where-you-ad-network
restart: always
ports:
- "3306:3306"
# 3. Redis
redis:
image: redis:latest
container_name: where-you-ad-redis
networks:
- where-you-ad-network
restart: always
ports:
- "6379:6379"
# 4. Kafka
kafka:
image: apache/kafka:3.7.0
container_name: where-you-ad-kafka
ports:
- "9092:9092"
environment:
KAFKA_NODE_ID: 1
KAFKA_PROCESS_ROLES: broker,controller
# INTERNAL(도커 내부용 29092), EXTERNAL(외부 접속용 9092)
KAFKA_LISTENERS: INTERNAL://0.0.0.0:29092,EXTERNAL://0.0.0.0:9092,CONTROLLER://0.0.0.0:9093
KAFKA_ADVERTISED_LISTENERS: INTERNAL://kafka:29092,EXTERNAL://${KAFKA_HOST_IP}:9092
KAFKA_LISTENER_SECURITY_PROTOCOL_MAP: INTERNAL:PLAINTEXT,EXTERNAL:PLAINTEXT,CONTROLLER:PLAINTEXT
KAFKA_INTER_BROKER_LISTENER_NAME: INTERNAL
KAFKA_CONTROLLER_LISTENER_NAMES: CONTROLLER
KAFKA_CONTROLLER_QUORUM_VOTERS: 1@localhost:9093
# 로컬 개발용 단일 노드 설정
KAFKA_OFFSETS_TOPIC_REPLICATION_FACTOR: 1
KAFKA_TRANSACTION_STATE_LOG_REPLICATION_FACTOR: 1
KAFKA_TRANSACTION_STATE_LOG_MIN_ISR: 1
KAFKA_GROUP_INITIAL_REBALANCE_DELAY_MS: 0
networks:
- where-you-ad-network
networks:
where-you-ad-network:
driver: bridge