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}" # [수정] Infra Compose의 컨테이너 이름과 일치 - DB_HOST=baron_postgres - CLICKHOUSE_HOST=baron_clickhouse # [수정] 포트 변수 확실하게 매핑 (기본값 9000) - 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:-baron_redis:6389}" - IDP_PROVIDER=ory # Ory Service URLs - 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}" # [추가] Oathkeeper URL 명시 (DNS 문제 해결) - OATHKEEPER_API_URL=${OATHKEEPER_API_URL:-http://ory_oathkeeper:4456} - PROFILE_CACHE_TTL="${PROFILE_CACHE_TTL:-30m}" ports: - "${BACKEND_PORT:-3000}:3000" depends_on: infra_check: condition: service_started networks: - baron_net - ory-net healthcheck: test: ["CMD", "wget", "-qO-", "http://127.0.0.1:3000/health"] interval: 10s timeout: 5s retries: 10 start_period: 60s 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