- Rust core engine with HTTP ingestion gateway, hybrid search, and white-box resume matching - Python edge collectors supporting declarative TOML and specialized adapters - PostgreSQL schema migrations with pgvector embedding support - Hardened security controls: strict CSP, terminal sanitization, and input boundary validation - Multi-service container orchestration with dedicated non-root execution
58 lines
1.5 KiB
YAML
58 lines
1.5 KiB
YAML
services:
|
|
postgres:
|
|
image: pgvector/pgvector:pg16
|
|
container_name: bangwen-postgres
|
|
restart: unless-stopped
|
|
environment:
|
|
POSTGRES_USER: bangwen
|
|
POSTGRES_PASSWORD: bangwen_dev
|
|
POSTGRES_DB: bangwen
|
|
ports:
|
|
- "127.0.0.1:5432:5432"
|
|
volumes:
|
|
- pgdata:/var/lib/postgresql/data
|
|
healthcheck:
|
|
test: ["CMD-SHELL", "pg_isready -U bangwen -d bangwen"]
|
|
interval: 5s
|
|
timeout: 5s
|
|
retries: 5
|
|
|
|
core:
|
|
build:
|
|
context: .
|
|
dockerfile: Dockerfile
|
|
container_name: bangwen-core
|
|
restart: unless-stopped
|
|
depends_on:
|
|
postgres:
|
|
condition: service_healthy
|
|
environment:
|
|
DATABASE_URL: postgres://bangwen:bangwen_dev@postgres:5432/bangwen
|
|
SERVER_HOST: "0.0.0.0"
|
|
SERVER_PORT: "8080"
|
|
LOG_LEVEL: info
|
|
INGEST_TOKEN: ${INGEST_TOKEN:?INGEST_TOKEN must be set in .env or environment}
|
|
OLLAMA_BASE_URL: ${OLLAMA_BASE_URL:-http://host.docker.internal:11434}
|
|
extra_hosts:
|
|
- "host.docker.internal:host-gateway"
|
|
ports:
|
|
- "127.0.0.1:8080:8080"
|
|
|
|
collector:
|
|
build:
|
|
context: ./collectors
|
|
dockerfile: Dockerfile
|
|
container_name: bangwen-collector
|
|
restart: unless-stopped
|
|
depends_on:
|
|
- core
|
|
environment:
|
|
CORE_INGEST_URL: http://core:8080/api/v1/ingest
|
|
INGEST_TOKEN: ${INGEST_TOKEN:?INGEST_TOKEN must be set in .env or environment}
|
|
SCHEDULE_INTERVAL_HOURS: 6
|
|
volumes:
|
|
- ./collectors/config.toml:/app/config.toml:ro
|
|
|
|
volumes:
|
|
pgdata:
|