A complete reference docker-compose.yml for running SemiLayer locally or in a
single-node staging environment. Requires an enterprise license for the Docker images.
ℹ️
Docker images are available to licensed enterprise customers.
Contact root@semilayer.dev to request access.
version:'3.9'services:# ── SemiLayer API ──────────────────────────────────────────────────────service:image:ghcr.io/semilayer/service:latestports:-'3001:3001'environment:PORT:3001DATABASE_URL:postgresql://semilayer:semilayer@db:5432/semilayerDEPLOYMENT_MODE:enterprise# Auth — generic OIDC (swap provider freely)AUTH_PROVIDER:oidcAUTH_ISSUER:${AUTH_ISSUER}AUTH_CLIENT_ID:${AUTH_CLIENT_ID}AUTH_CLIENT_SECRET:${AUTH_CLIENT_SECRET}AUTH_AUDIENCE:${AUTH_AUDIENCE}# EmbeddingsEMBEDDING_PROVIDER:${EMBEDDING_PROVIDER:-openai}EMBEDDING_API_KEY:${EMBEDDING_API_KEY}EMBEDDING_MODEL:${EMBEDDING_MODEL:-text-embedding-3-small}# Encryption (local provider — fine for dev/staging)ENCRYPTION_PROVIDER:localENCRYPTION_LOCAL_KEY:${ENCRYPTION_LOCAL_KEY}depends_on:db:condition:service_healthyrestart:unless-stopped# ── SemiLayer Worker ──────────────────────────────────────────────────worker:image:ghcr.io/semilayer/worker:latestenvironment:DATABASE_URL:postgresql://semilayer:semilayer@db:5432/semilayerDEPLOYMENT_MODE:enterpriseEMBEDDING_PROVIDER:${EMBEDDING_PROVIDER:-openai}EMBEDDING_API_KEY:${EMBEDDING_API_KEY}EMBEDDING_MODEL:${EMBEDDING_MODEL:-text-embedding-3-small}ENCRYPTION_PROVIDER:localENCRYPTION_LOCAL_KEY:${ENCRYPTION_LOCAL_KEY}depends_on:db:condition:service_healthyrestart:unless-stopped# ── Data store ────────────────────────────────────────────────────────db:image:pgvector/pgvector:pg16environment:POSTGRES_USER:semilayerPOSTGRES_PASSWORD:semilayerPOSTGRES_DB:semilayerports:-'5433:5432'# 5433 to avoid conflicts with a local Postgresvolumes:-semilayer_data:/var/lib/postgresql/datahealthcheck:test: ['CMD-SHELL', 'pg_isready -U semilayer']
interval:5stimeout:5sretries:5restart:unless-stoppedvolumes:semilayer_data: