# 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) SILO_DB_HOST: psql.example.internal SILO_DB_PORT: 5432 SILO_DB_NAME: silo SILO_DB_USER: silo SILO_DB_PASSWORD: ${SILO_DB_PASSWORD:?Database password required} SILO_DB_SSLMODE: require # MinIO storage (minio.example.internal) 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} SILO_MINIO_BUCKET: silo-files SILO_MINIO_USE_SSL: "true" # Server settings SILO_SERVER_BASE_URL: ${SILO_BASE_URL:-http://silo.example.internal:8080} 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"