Files
0pt/infra/docker-compose.yml
T

70 lines
1.8 KiB
YAML

# 0pt — always-on services for a single small VPS (docs/08). Vercel hosts the
# Next.js frontend; this compose runs the data engine + DB + embeds + proxy.
services:
postgres:
image: pgvector/pgvector:pg16
environment:
POSTGRES_USER: opt
POSTGRES_PASSWORD: ${PG_PASSWORD}
POSTGRES_DB: opt
volumes:
- pgdata:/var/lib/postgresql/data
- ../sql:/docker-entrypoint-initdb.d:ro
restart: unless-stopped
redis:
image: redis:7
restart: unless-stopped
api:
build: ../services/api
command: uvicorn orchestrator.main:app --host 0.0.0.0 --port 8000
environment:
DATABASE_URL: postgres://opt:${PG_PASSWORD}@postgres:5432/opt
COMPANIES_HOUSE_API_KEY: ${COMPANIES_HOUSE_API_KEY:-}
INTERNAL_TOKEN: ${INTERNAL_TOKEN}
depends_on: [postgres, redis]
restart: unless-stopped
worker:
build: ../services/api
command: python -m workers.run
environment:
DATABASE_URL: postgres://opt:${PG_PASSWORD}@postgres:5432/opt
COMPANIES_HOUSE_API_KEY: ${COMPANIES_HOUSE_API_KEY:-}
depends_on: [postgres, redis]
restart: unless-stopped
nocodb:
image: nocodb/nocodb:latest
environment:
NC_DB: "pg://postgres:5432?u=opt&p=${PG_PASSWORD}&d=opt"
NC_PUBLIC_URL: "https://data.0pt.app"
depends_on: [postgres]
restart: unless-stopped
metabase:
image: metabase/metabase:latest
environment:
MB_DB_TYPE: postgres
MB_DB_HOST: postgres
MB_DB_PORT: "5432"
MB_DB_USER: opt
MB_DB_PASS: ${PG_PASSWORD}
MB_DB_DBNAME: opt
depends_on: [postgres]
restart: unless-stopped
caddy:
image: caddy:2
ports: ["80:80", "443:443"]
volumes:
- ./Caddyfile:/etc/caddy/Caddyfile
- caddydata:/data
depends_on: [api, nocodb, metabase]
restart: unless-stopped
volumes:
pgdata: {}
caddydata: {}