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