Files
pistation/infra/docker-compose.yml

78 lines
1.9 KiB
YAML

name: pistation
services:
livekit:
image: livekit/livekit-server:latest
restart: unless-stopped
command: --config /etc/livekit.yaml
environment:
LIVEKIT_KEYS: "${LIVEKIT_API_KEY}: ${LIVEKIT_API_SECRET}"
volumes:
- ./livekit.yaml:/etc/livekit.yaml:ro
network_mode: host
server:
build:
context: ..
dockerfile: server/Dockerfile
restart: unless-stopped
depends_on:
- livekit
environment:
BIND_ADDRESS: 0.0.0.0:8080
DATABASE_URL: sqlite:///data/pistation.db?mode=rwc
MEDIA_DIR: /data/media
PACKAGE_DIR: /data/packages
PUBLIC_API_URL: ${PUBLIC_API_URL}
LIVEKIT_URL: ${PUBLIC_LIVEKIT_URL}
LIVEKIT_API_KEY: ${LIVEKIT_API_KEY}
LIVEKIT_API_SECRET: ${LIVEKIT_API_SECRET}
SESSION_SECRET: ${SESSION_SECRET}
SESSION_TTL_HOURS: ${SESSION_TTL_HOURS}
BOOTSTRAP_ADMIN_EMAIL: ${BOOTSTRAP_ADMIN_EMAIL}
BOOTSTRAP_ADMIN_PASSWORD: ${BOOTSTRAP_ADMIN_PASSWORD}
PIN_ROTATION_SECONDS: ${PIN_ROTATION_SECONDS}
PIN_GRACE_SECONDS: ${PIN_GRACE_SECONDS}
CORS_ORIGINS: ${CORS_ORIGINS}
volumes:
- server-data:/data
ports:
- "8080:8080"
web:
build:
context: ..
dockerfile: apps/web-client/Dockerfile
restart: unless-stopped
depends_on:
- server
environment:
PORT: 3000
HOST: 0.0.0.0
ORIGIN: ${PUBLIC_WEB_URL}
PUBLIC_API_URL: ${PUBLIC_API_URL}
PUBLIC_LIVEKIT_URL: ${PUBLIC_LIVEKIT_URL}
ports:
- "3000:3000"
proxy:
image: nginx:alpine
restart: unless-stopped
profiles:
- tls
depends_on:
- server
- web
volumes:
- ./proxy.conf:/etc/nginx/conf.d/pistation.conf:ro
- ./certs:/etc/nginx/certs:ro
extra_hosts:
- "host.docker.internal:host-gateway"
ports:
- "${TLS_WEB_PORT:-3443}:3443"
- "${TLS_API_PORT:-8443}:8443"
- "${TLS_LIVEKIT_PORT:-7443}:7443"
volumes:
server-data: