1
0
forked from baron/baron-sso
Files
baron-sso/docker/docker-compose.staging.template.yaml
2026-02-09 11:04:48 +09:00

119 lines
3.5 KiB
YAML

name: baron-sso-staging
services:
backend:
image: ${BACKEND_IMAGE_NAME}:${IMAGE_TAG}
container_name: baron_backend
restart: unless-stopped
env_file:
- .env
environment:
- APP_ENV=stage
- GO_ENV=stage
- COOKIE_SECRET="${COOKIE_SECRET}"
- DB_HOST=postgres
- CLICKHOUSE_HOST=clickhouse
- CLICKHOUSE_PORT="${CLICKHOUSE_PORT_NATIVE:-9000}"
- CLICKHOUSE_USER="${CLICKHOUSE_USER:-baron}"
- CLICKHOUSE_PASSWORD="${CLICKHOUSE_PASSWORD:-password}"
- USERFRONT_URL="${USERFRONT_URL:-https://sso.hmac.kr}"
- REDIS_ADDR="${REDIS_ADDR:-redis:6389}"
- IDP_PROVIDER=ory
- KRATOS_ADMIN_URL="${KRATOS_ADMIN_URL:-http://ory_kratos:4434}"
- HYDRA_ADMIN_URL="${HYDRA_ADMIN_URL:-http://ory_hydra:4445}"
- HYDRA_PUBLIC_URL="${HYDRA_PUBLIC_URL:-http://ory_hydra:4444}"
- PROFILE_CACHE_TTL="${PROFILE_CACHE_TTL:-30m}"
# Oathkeeper URL이 필요하다면 명시 (일반적으로 내부 DNS 사용시 불필요하나 확실히 하기 위해)
- OATHKEEPER_API_URL=http://ory_oathkeeper:4456
ports:
- "${BACKEND_PORT:-3000}:3000"
depends_on:
infra_check:
condition: service_started
networks:
- baron_net
- ory-net
# [수정됨] Healthcheck 시간을 넉넉하게 늘림
healthcheck:
test: ["CMD", "wget", "-qO-", "http://127.0.0.1:3000/health"]
interval: 10s
timeout: 5s
retries: 10 # 3회 -> 10회 (최대 10번 재시도)
start_period: 60s # 10초 -> 60초 (처음 1분간은 실패해도 봐줌)
adminfront:
image: ${ADMINFRONT_IMAGE_NAME}:${IMAGE_TAG}
container_name: baron_adminfront
restart: unless-stopped
env_file:
- .env
environment:
- APP_ENV=stage
- API_PROXY_TARGET=http://baron_backend:3000
ports:
- "${ADMINFRONT_PORT:-5173}:5173"
networks:
- baron_net
devfront:
image: ${DEVFRONT_IMAGE_NAME}:${IMAGE_TAG}
container_name: baron_devfront
restart: unless-stopped
env_file:
- .env
environment:
- APP_ENV=stage
- API_PROXY_TARGET=http://baron_backend:3000
ports:
- "${DEVFRONT_PORT:-5174}:5173"
networks:
- baron_net
userfront:
image: ${USERFRONT_IMAGE_NAME}:${IMAGE_TAG}
container_name: baron_userfront
restart: unless-stopped
env_file:
- .env
environment:
- BACKEND_URL=${BACKEND_URL}
- USERFRONT_URL=${USERFRONT_URL}
- APP_ENV=stage
networks:
- baron_net
- ory-net
depends_on:
backend:
condition: service_healthy
command: >
/bin/sh -c "mkdir -p /usr/share/nginx/html/assets &&
echo \"BACKEND_URL=$${BACKEND_URL}\" >> /usr/share/nginx/html/assets/.env &&
echo \"USERFRONT_URL=$${USERFRONT_URL}\" >> /usr/share/nginx/html/assets/.env &&
echo \"APP_ENV=stage\" >> /usr/share/nginx/html/assets/.env &&
cp /usr/share/nginx/html/assets/.env /usr/share/nginx/html/.env &&
nginx -g 'daemon off;'"
# [수정됨] Userfront도 넉넉하게 설정
healthcheck:
test: ["CMD", "wget", "-qO-", "http://127.0.0.1:5000/"]
interval: 10s
timeout: 5s
retries: 5
start_period: 30s
infra_check:
image: alpine
command: ["echo", "Infrastructure assumed running"]
networks:
- baron_net
networks:
baron_net:
external: true
name: baron_net
ory-net:
external: true
name: ory-net
public_net:
external: true
name: public_net