31fa8d573b
- 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/네트워크 항목 추가.
39 lines
1.2 KiB
YAML
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}
|