services:
db:
image: postgres:18-alpine
environment:
POSTGRES_USER: bus
POSTGRES_PASSWORD: ${POSTGRES_PASSWORD:?set POSTGRES_PASSWORD in .env}
POSTGRES_DB: bus
volumes:
- bus-data:/var/lib/postgresql/data
healthcheck:
test:
interval: 5s
timeout: 3s
retries: 10
bus:
build: .
# For a public deployment put a TLS proxy (Caddy, nginx, Traefik) in front
# and set BUS_ALLOWED_HOSTS to your real hostname.
environment:
DATABASE_URL: postgres://bus:${POSTGRES_PASSWORD}@db:5432/bus
BUS_BIND: 0.0.0.0:8787
BUS_ALLOWED_HOSTS: ${BUS_ALLOWED_HOSTS:-*}
RUST_LOG: ai_crew_sync=info
ports:
- "8787:8787"
depends_on:
db:
condition: service_healthy
volumes:
bus-data: