# Infrastructure services only — provisions remote-host infra (postgres,# consumed by litellm on that host). The Local Studio app itself does not# consume postgres.# Controller and frontend run natively on the host (not in Docker)# because they need nvidia-smi access and host process visibility.services: postgres: image: postgres:16 container_name: local-studio-postgres # Bind to loopback only — the native controller connects from the same host. # Do not expose Postgres on all interfaces. ports: - "127.0.0.1:5432:5432" environment: - POSTGRES_USER=${POSTGRES_USER:-postgres} # Set POSTGRES_PASSWORD in .env.local; the default is for local dev only. - POSTGRES_PASSWORD=${POSTGRES_PASSWORD:-postgres} - POSTGRES_DB=${POSTGRES_DB:-local_studio} volumes: - ./data/postgres:/var/lib/postgresql/data restart: unless-stopped healthcheck: test: ["CMD-SHELL", "pg_isready -U postgres"] interval: 10s timeout: 5s retries: 5
# Infrastructure services only — provisions remote-host infra (postgres,
# consumed by litellm on that host). The Local Studio app itself does not
# consume postgres.
# Controller and frontend run natively on the host (not in Docker)
# because they need nvidia-smi access and host process visibility.
services:
postgres:
image: postgres:16
container_name: local-studio-postgres
# Bind to loopback only — the native controller connects from the same host.
# Do not expose Postgres on all interfaces.
ports:
- "127.0.0.1:5432:5432"
environment:
- POSTGRES_USER=${POSTGRES_USER:-postgres}
# Set POSTGRES_PASSWORD in .env.local; the default is for local dev only.
- POSTGRES_PASSWORD=${POSTGRES_PASSWORD:-postgres}
- POSTGRES_DB=${POSTGRES_DB:-local_studio}
volumes:
- ./data/postgres:/var/lib/postgresql/data
restart: unless-stopped
healthcheck:
test: ["CMD-SHELL", "pg_isready -U postgres"]
interval: 10s
timeout: 5s
retries: 5