-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathdocker-compose.yml
More file actions
130 lines (114 loc) · 3.93 KB
/
docker-compose.yml
File metadata and controls
130 lines (114 loc) · 3.93 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
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:
# .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}
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