시크릿 유출 차단(핵심): - config.local.toml(OpenAI·DECODO·네이버 키)이 COPY . . 로 이미지에 구워지던 문제 — .dockerignore 제외 + 빌드 시 example(플레이스홀더) 복사로 대체. 실값은 compose env 주입(리포 루트 .env, 템플릿 .env.example) - DECODO_PORT_START/END/SESSION_MINUTES env override 추가 — 포트가 toml(플레이스홀더 0)에만 있으면 자격증명을 넣어도 프록시가 조용히 꺼지는 구멍 봉합 배포 견고화: - API Dockerfile 에 HEALTHCHECK(/healthz) 추가 - autoheal 컨테이너 추가 — compose restart 는 unhealthy 를 재시작하지 않으므로 라벨(autoheal=true) 기반 자동 재시작 담당 - 이미지 python 3.12→3.14 정렬(로컬 개발·테스트 환경과 일치) - API 이미지 경량화: requirements-api.txt 분리(크롤 의존성 제거, 330MB) 검증: 양 이미지 빌드 성공, 이미지 내 시크릿·.profiles 부재 확인, 무시크릿 API 이미지 스모크(healthz/readyz/HEALTHCHECK healthy) 통과 Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
12 lines
500 B
Plaintext
12 lines
500 B
Plaintext
# LPS API 서버 전용 의존성 — 요청 접수/조회만(크롤 없음).
|
|
# 크롤 의존성(patchright·curl_cffi·selectolax·openai)은 워커 전용(requirements.txt).
|
|
# web_main import 체인 정적 추적으로 확인(2026-07-10): fastapi/uvicorn/sqlalchemy/pydantic 만 필요.
|
|
fastapi
|
|
uvicorn[standard]
|
|
sqlalchemy>=2.0
|
|
greenlet # SQLAlchemy async 의 sync/async 브리지에 필수
|
|
asyncpg
|
|
orjson
|
|
pydantic>=2.0
|
|
httpx # (얇음) 향후 API→워커 헬스 프록시 등 대비 유지
|