# Production Docker Compose for Silo # Uses external PostgreSQL (psql.example.internal) and MinIO (minio.example.internal) # # Usage: # export SILO_DB_PASSWORD= # export SILO_MINIO_ACCESS_KEY= # export SILO_MINIO_SECRET_KEY= # docker compose -f docker-compose.prod.yaml up -d services: silo: build: context: .. dockerfile: build/package/Dockerfile container_name: silod restart: unless-stopped environment: # Database connection (psql.example.internal) # Supported as direct env var overrides in the Go config loader: SILO_DB_HOST: psql.example.internal SILO_DB_NAME: silo SILO_DB_USER: silo SILO_DB_PASSWORD: ${SILO_DB_PASSWORD:?Database password required} # Note: SILO_DB_PORT and SILO_DB_SSLMODE are NOT supported as direct # env var overrides. Set these in config.yaml instead, or use ${VAR} # syntax in the YAML file. See docs/CONFIGURATION.md for details. # MinIO storage (minio.example.internal) # Supported as direct env var overrides: SILO_MINIO_ENDPOINT: minio.example.internal:9000 SILO_MINIO_ACCESS_KEY: ${SILO_MINIO_ACCESS_KEY:?MinIO access key required} SILO_MINIO_SECRET_KEY: ${SILO_MINIO_SECRET_KEY:?MinIO secret key required} # Note: SILO_MINIO_BUCKET and SILO_MINIO_USE_SSL are NOT supported as # direct env var overrides. Set these in config.yaml instead. ports: - "8080:8080" volumes: - ../schemas:/etc/silo/schemas:ro - ./config.prod.yaml:/etc/silo/config.yaml:ro healthcheck: test: ["CMD", "wget", "-qO-", "http://localhost:8080/health"] interval: 30s timeout: 5s retries: 3 start_period: 10s logging: driver: "json-file" options: max-size: "10m" max-file: "3"