Cybersecurity-Panel / docker-compose.yml
NeonClary
Refactor for HF Spaces: single-container, SQLite shim, ChromaDB on /data
fdbdab0
# ---------------------------------------------------------------------------
# Local-dev wrapper around the single-container HuggingFace Spaces image.
#
# This file used to spin up three services (FastAPI backend, CRA dev server,
# MongoDB). The HF deployment shape (single-container, SQLite on the bucket)
# is now also the local-dev shape — same image you push to the Space — so
# this is a one-service compose with a named volume that emulates the HF
# Storage Bucket mount.
#
# Override CYBERPANEL_HOST_PORT via .env (or shell) if 7861 conflicts; the
# in-container port is fixed at 7860 to mirror HF Spaces.
# ---------------------------------------------------------------------------
services:
app:
build:
context: .
dockerfile: Dockerfile
image: cybersecurity-panel:dev
ports:
- "${CYBERPANEL_HOST_PORT:-7861}:7860"
environment:
JWT_SECRET_KEY: ${JWT_SECRET_KEY:-CHANGEME-by-overriding-in-dot-env-file}
GEMINI_API_KEY: ${GEMINI_API_KEY:-}
OPENAI_API_KEY: ${OPENAI_API_KEY:-}
VLLM_API_KEY: ${VLLM_API_KEY:-}
VLLM_API_USERNAME: ${VLLM_API_USERNAME:-}
GEMINI_MODEL: ${GEMINI_MODEL:-gemini-2.5-flash}
CONFIG_PATH: ${CONFIG_PATH:-/home/user/app/cybersecurity_config.yaml}
# Same-origin in single-container; only relevant for cross-origin dev.
CORS_ORIGINS: ${CORS_ORIGINS:-*}
# SQLite + ChromaDB persistence both land here. The named volume below
# mirrors the HF Storage Bucket mount so user data survives rebuilds.
DATA_DIR: /data
volumes:
- cybersecurity_data:/data
volumes:
cybersecurity_data: