# Single-server deployment (VPS or one VM): Postgres + migrations + API + worker. # cp .env.example .env # then set the secrets and OPENROUTER_API_KEY # docker compose up -d --build services: db: image: pgvector/pgvector:pg16 environment: POSTGRES_USER: vajra POSTGRES_PASSWORD: ${POSTGRES_PASSWORD:?set POSTGRES_PASSWORD in .env} POSTGRES_DB: vajra volumes: - pgdata:/var/lib/postgresql/data healthcheck: test: ["CMD-SHELL", "pg_isready -U vajra -d vajra"] interval: 5s retries: 20 restart: unless-stopped migrate: build: . env_file: .env environment: VAJRA_DATABASE_URL: postgresql+psycopg://vajra:${POSTGRES_PASSWORD}@db:5432/vajra command: ["alembic", "upgrade", "head"] depends_on: db: condition: service_healthy restart: "no" api: build: . env_file: .env environment: VAJRA_DATABASE_URL: postgresql+psycopg://vajra:${POSTGRES_PASSWORD}@db:5432/vajra command: ["vajra-api"] ports: - "${VAJRA_PORT:-8000}:8000" depends_on: migrate: condition: service_completed_successfully restart: unless-stopped worker: build: . env_file: .env environment: VAJRA_DATABASE_URL: postgresql+psycopg://vajra:${POSTGRES_PASSWORD}@db:5432/vajra command: ["vajra-worker"] healthcheck: disable: true depends_on: migrate: condition: service_completed_successfully restart: unless-stopped volumes: pgdata: