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/네트워크 항목 추가.
This commit is contained in:
+22
-6
@@ -4,19 +4,35 @@ services:
|
||||
image: dbx-corm:latest
|
||||
container_name: dbx-corm
|
||||
restart: unless-stopped
|
||||
ports:
|
||||
- "8002:8002"
|
||||
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
|
||||
- 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-net:
|
||||
# 이미 운영 중인 postgres-db 컨테이너가 속해 있는 외부 네트워크.
|
||||
postgres_net:
|
||||
external: true
|
||||
name: postgres_default # 서버의 실제 PostgreSQL 네트워크 이름으로 수정
|
||||
name: ${POSTGRES_NETWORK:-postgres_default}
|
||||
# NPM(Nginx Proxy Manager) 가 속해 있는 외부 네트워크.
|
||||
# NPM 이 dbx-corm 컨테이너에 컨테이너 이름으로 도달 가능해야 한다.
|
||||
web_net:
|
||||
external: true
|
||||
name: ${WEB_NETWORK:-npm_default}
|
||||
|
||||
Reference in New Issue
Block a user