@@ -296,7 +296,7 @@ services:
296296 redis-node-6 :
297297 condition : service_healthy
298298 environment :
299- - REDIS_PASSWORD= ${REDIS_PASSWORD:-tt_redis_pass}
299+ REDIS_PASSWORD : ${REDIS_PASSWORD:-tt_redis_pass}
300300 volumes :
301301 - ./init-cluster.sh:/init-cluster.sh:ro
302302 command : sh /init-cluster.sh
@@ -319,23 +319,66 @@ services:
319319 - common
320320
321321 environment :
322- # ✅ (핵심) prod 강제
323- - SPRING_PROFILES_ACTIVE= prod
322+ # ===== Profile =====
323+ SPRING_PROFILES_ACTIVE : ${ SPRING_PROFILES_ACTIVE:- prod}
324324
325- # ✅ (핵심) DB 접속을 localhost가 아니라 postgres 서비스로 강제
326- - SPRING_DATASOURCE_URL= jdbc:postgresql://postgres:5432/${POSTGRES_DB:-tt_db}
327- - SPRING_DATASOURCE_USERNAME= ${POSTGRES_USER:-myuser}
328- - SPRING_DATASOURCE_PASSWORD= ${POSTGRES_PASSWORD:-mypassword}
325+ # ===== DB (Spring 표준 키) =====
326+ SPRING_DATASOURCE_URL : jdbc:postgresql://postgres:5432/${POSTGRES_DB:-tt_db}
327+ SPRING_DATASOURCE_USERNAME : ${POSTGRES_USER:-myuser}
328+ SPRING_DATASOURCE_PASSWORD : ${POSTGRES_PASSWORD:-mypassword}
329329
330- # ✅ Redis 클러스터를 Spring이 확실히 인식하도록 표준 키로 주입
331- - SPRING_DATA_REDIS_CLUSTER_NODES= redis-node-1:7000,redis-node-2:7001,redis-node-3:7002,redis-node-4:7003,redis-node-5:7004,redis-node-6:7005
332- - SPRING_DATA_REDIS_PASSWORD= ${REDIS_PASSWORD:-tt_redis_pass}
330+ # ===== Redis (Spring 표준 키) =====
331+ SPRING_DATA_REDIS_CLUSTER_NODES : redis-node-1:7000,redis-node-2:7001,redis-node-3:7002,redis-node-4:7003,redis-node-5:7004,redis-node-6:7005
332+ SPRING_DATA_REDIS_PASSWORD : ${REDIS_PASSWORD:-tt_redis_pass}
333333
334- # (유지) 기존 커스텀 키가 앱에서 사용된다면 같이 둬도 됨
335- - POSTGRES_HOST=postgres
336- - POSTGRES_PORT=${POSTGRES_PORT:-5432}
337- - REDIS_MODE=cluster
338- - REDIS_CLUSTER_NODES=redis-node-1:7000,redis-node-2:7001,redis-node-3:7002,redis-node-4:7003,redis-node-5:7004,redis-node-6:7005
334+ # =====커스텀 키 =====
335+ POSTGRES_HOST : postgres
336+ POSTGRES_PORT : ${POSTGRES_PORT:-5432}
337+ POSTGRES_USER : ${POSTGRES_USER:-myuser}
338+ POSTGRES_PASSWORD : ${POSTGRES_PASSWORD:-mypassword}
339+ POSTGRES_DB : ${POSTGRES_DB:-tt_db}
340+
341+ REDIS_MODE : cluster
342+ REDIS_PASSWORD : ${REDIS_PASSWORD:-tt_redis_pass}
343+ REDIS_CLUSTER_NODES : redis-node-1:7000,redis-node-2:7001,redis-node-3:7002,redis-node-4:7003,redis-node-5:7004,redis-node-6:7005
344+
345+ # ===== Mail =====
346+ MAIL_HOST : ${MAIL_HOST}
347+ MAIL_PORT : ${MAIL_PORT}
348+ MAIL_USERNAME : ${MAIL_USERNAME}
349+ MAIL_PASSWORD : ${MAIL_PASSWORD}
350+ MAIL_FROM_ADDRESS : ${MAIL_FROM_ADDRESS}
351+ MAIL_FROM_NAME : ${MAIL_FROM_NAME}
352+
353+ # ===== Spring Mail Properties =====
354+ SPRING_MAIL_PROPERTIES_MAIL_SMTP_AUTH : ${SPRING_MAIL_PROPERTIES_MAIL_SMTP_AUTH}
355+ SPRING_MAIL_PROPERTIES_MAIL_SMTP_STARTTLS_ENABLE : ${SPRING_MAIL_PROPERTIES_MAIL_SMTP_STARTTLS_ENABLE}
356+ SPRING_MAIL_PROPERTIES_MAIL_SMTP_STARTTLS_REQUIRED : ${SPRING_MAIL_PROPERTIES_MAIL_SMTP_STARTTLS_REQUIRED}
357+
358+ # ===== AWS / S3 =====
359+ AWS_REGION : ${AWS_REGION}
360+ AWS_S3_BUCKET : ${AWS_S3_BUCKET}
361+
362+ # ===== JWT =====
363+ JWT_SECRET : ${JWT_SECRET}
364+ JWT_ACCESS_EXPIRATION : ${JWT_ACCESS_EXPIRATION}
365+ JWT_REFRESH_EXPIRATION : ${JWT_REFRESH_EXPIRATION}
366+
367+ # ===== Kakao OAuth =====
368+ KAKAO_CLIENT_ID : ${KAKAO_CLIENT_ID}
369+ KAKAO_CLIENT_SECRET : ${KAKAO_CLIENT_SECRET}
370+ KAKAO_ISSUER : ${KAKAO_ISSUER}
371+ KAKAO_REDIRECT_URI : ${KAKAO_REDIRECT_URI}
372+ KAKAO_TOKEN_URI : ${KAKAO_TOKEN_URI}
373+ KAKAO_USER_INFO_URI : ${KAKAO_USER_INFO_URI}
374+
375+ # ===== Slack =====
376+ SLACK_WEBHOOK_AUTH : ${SLACK_WEBHOOK_AUTH}
377+
378+ # ===== JPA / Hibernate =====
379+ DDL_AUTO : ${DDL_AUTO}
380+ SPRING_JPA_HIBERNATE_DDL_AUTO : ${SPRING_JPA_HIBERNATE_DDL_AUTO}
381+ SPRING_JPA_PROPERTIES_HIBERNATE_HBM2DDL_HALT_ON_ERROR : ${SPRING_JPA_PROPERTIES_HIBERNATE_HBM2DDL_HALT_ON_ERROR}
339382
340383 healthcheck :
341384 test : [ "CMD-SHELL", "wget --quiet --tries=1 --spider http://localhost:8080/actuator/health || exit 1" ]
@@ -378,10 +421,10 @@ services:
378421 ports :
379422 - " 3001:3000"
380423 environment :
381- - GF_SECURITY_ADMIN_USER= admin
382- - GF_SECURITY_ADMIN_PASSWORD= ${GRAFANA_PASSWORD:-admin123!}
383- - GF_USERS_ALLOW_SIGN_UP= false
384- - GF_SERVER_ROOT_URL= ${GRAFANA_ROOT_URL:-http://localhost:3001}
424+ GF_SECURITY_ADMIN_USER : admin
425+ GF_SECURITY_ADMIN_PASSWORD : ${GRAFANA_PASSWORD:-admin123!}
426+ GF_USERS_ALLOW_SIGN_UP : " false"
427+ GF_SERVER_ROOT_URL : ${GRAFANA_ROOT_URL:-http://localhost:3001}
385428 volumes :
386429 - ./monitoring/grafana/provisioning:/etc/grafana/provisioning:ro
387430 - ./monitoring/grafana/dashboards:/var/lib/grafana/dashboards:ro
@@ -401,8 +444,6 @@ services:
401444 - prometheus
402445 ports :
403446 - " 9093:9093"
404- environment :
405- - SLACK_WEBHOOK_AUTH=${SLACK_WEBHOOK_AUTH}
406447 volumes :
407448 - ./monitoring/alertmanager/alertmanager.yml:/etc/alertmanager/alertmanager.yml:ro
408449 - alertmanager_data:/alertmanager
@@ -417,8 +458,7 @@ services:
417458 timeout : 10s
418459 retries : 3
419460
420- # NOTE: redis_exporter는 멀티 주소/클러스터를 완전 지원하지 않는 경우가 많아서
421- # 일단 한 노드만 붙도록(health 통과) 설정을 보수적으로 바꿈
461+ # NOTE: redis_exporter는 멀티 주소/클러스터를 완전 지원하지 않는 경우가 많아서 한 노드만 붙임
422462 redis-exporter :
423463 image : oliver006/redis_exporter:v1.80.1
424464 restart : unless-stopped
@@ -428,8 +468,8 @@ services:
428468 ports :
429469 - " 9121:9121"
430470 environment :
431- - REDIS_ADDR= redis://redis-node-1:7000
432- - REDIS_PASSWORD= ${REDIS_PASSWORD:-tt_redis_pass}
471+ REDIS_ADDR : redis://redis-node-1:7000
472+ REDIS_PASSWORD : ${REDIS_PASSWORD:-tt_redis_pass}
433473 networks :
434474 - common
435475 healthcheck :
@@ -447,7 +487,7 @@ services:
447487 ports :
448488 - " 9187:9187"
449489 environment :
450- - DATA_SOURCE_NAME= postgresql://${POSTGRES_USER:-myuser}:${POSTGRES_PASSWORD:-mypassword}@postgres:5432/${POSTGRES_DB:-tt_db}?sslmode=disable
490+ DATA_SOURCE_NAME : postgresql://${POSTGRES_USER:-myuser}:${POSTGRES_PASSWORD:-mypassword}@postgres:5432/${POSTGRES_DB:-tt_db}?sslmode=disable
451491 networks :
452492 - common
453493 healthcheck :
0 commit comments