Files
dbx-corm/docker-compose.yml
king 31fa8d573b feat(sso): dbx-main SSO 통합, /corm/ 서브경로 호스팅, 인증 미들웨어 적용
- SessionMiddleware 추가 (dbx-main/OMS 와 동일 SECRET_KEY/COOKIE_NAME/MAX_AGE).
  미설정 시 fail-fast.
- AuthGuardMiddleware: 미인증 시 HTML 요청은 dbx-main /login?next=... 으로 302,
  API 요청은 401 JSON. 예외 경로: /static/, /health, OAuth 콜백, /login, /logout.
- /health/db 엔드포인트 추가 (DB ping) — dbx-main 헬스 배지가 폴링.
- /login, /logout 라우트 추가 (자체 OAuth 없음, dbx-main 으로 302 위임).
- APP_ROOT_PATH 환경변수 도입 — Dockerfile 의 uvicorn --root-path 로 전달.
- templates/index.html: 모든 /static/, /js 절대경로를 {{ root_path }} 기반으로,
  window.APP_BASE_PATH 변수 주입.
- static/js/app.js: fetch wrapper 1개로 /api/* 호출에 APP_BASE_PATH prepend,
  401 응답 시 dbx-main 로그인으로 자동 이동. 32 곳 호출 사이트는 그대로 둠.
- Cafe24 OAuth 콜백의 hard-coded redirect 도 root_path 인지하도록 수정.
- docker-compose.yml: 호스트 포트 바인딩 제거(0.0.0.0:8002 노출 차단),
  expose 추가, web_net(npm_default) 외부 네트워크 attach, healthcheck 추가.
- .env.example 에 SSO/네트워크 항목 추가.
2026-05-24 15:44:28 +09:00

39 lines
1.2 KiB
YAML

services:
corm-app:
build: .
image: dbx-corm:latest
container_name: dbx-corm
restart: unless-stopped
env_file:
- .env
environment:
# NPM 리버스 프록시 뒤 서브경로 호스팅.
APP_ROOT_PATH: ${APP_ROOT_PATH:-/corm}
# 호스트 포트 바인딩 없음 — NPM(Nginx Proxy Manager) 를 통해서만 접근.
expose:
- "8002"
volumes:
# 민감 파일은 Git에 안 올리고 서버 호스트에서 직접 마운트
- ./cafe24_tokens.json:/app/cafe24_tokens.json
- ./manual-ordering.json:/app/manual-ordering.json
networks:
- postgres_net
- web_net
healthcheck:
test: ["CMD", "curl", "-fsS", "http://localhost:8002/health/db"]
interval: 30s
timeout: 5s
retries: 5
start_period: 20s
networks:
# 이미 운영 중인 postgres-db 컨테이너가 속해 있는 외부 네트워크.
postgres_net:
external: true
name: ${POSTGRES_NETWORK:-postgres_default}
# NPM(Nginx Proxy Manager) 가 속해 있는 외부 네트워크.
# NPM 이 dbx-corm 컨테이너에 컨테이너 이름으로 도달 가능해야 한다.
web_net:
external: true
name: ${WEB_NETWORK:-npm_default}