# VEP P1 compose — pinned, extendable per phase. Internal network only. # Postgres+pgvector not published to host. Caddy (host) proxies git.* and api.*. services: postgres: image: pgvector/pgvector:0.7.0-pg16 environment: POSTGRES_USER: ${PG_USER:-vep} POSTGRES_PASSWORD: ${PG_PASS:-vep_dev_pass} POSTGRES_DB: vep healthcheck: test: ["CMD-SHELL", "pg_isready -U ${PG_USER:-vep} -d vep"] interval: 5s timeout: 3s retries: 10 volumes: - pgdata:/var/lib/postgresql/data - ./schema/init.sql:/docker-entrypoint-initdb.d/init.sql:ro networks: [vep_net] # NOT published to host — internal only. app: build: context: . dockerfile: Dockerfile environment: DATABASE_URL: postgresql://${PG_USER:-vep}:${PG_PASS:-vep_dev_pass}@postgres:5432/vep VEP_TENANT: t_default depends_on: postgres: condition: service_healthy ports: - "127.0.0.1:8000:8000" # loopback only; Caddy proxies publicly networks: [vep_net] # NOT published — Caddy proxies localhost:8000. forgejo: image: codeberg.org/forgejo/forgejo:10.0.3 environment: FORGEJO__database__DB_TYPE: sqlite FORGEJO__server__SSH_PORT: 22 FORGEJO__server__ROOT_URL: https://git.mangoopsdesign.com FORGEJO__server__APP_DATA_PATH: /data ports: - "127.0.0.1:3000:3000" # loopback only; Caddy proxies publicly - "2222:22" # host :2222 -> container ssh (avoids host :22) volumes: - forgejo_data:/data networks: [vep_net] networks: vep_net: driver: bridge volumes: pgdata: forgejo_data: