Files
ScreenShare/docker-compose.yml
T

73 lines
2.2 KiB
YAML

services:
postgres:
image: postgres:16-alpine
environment:
POSTGRES_DB: ${POSTGRES_DB}
POSTGRES_USER: ${POSTGRES_USER}
POSTGRES_PASSWORD: ${POSTGRES_PASSWORD}
ports:
- "127.0.0.1:5432:5432"
volumes:
- postgres-data:/var/lib/postgresql/data
healthcheck:
test: ["CMD-SHELL", "pg_isready -U ${POSTGRES_USER} -d ${POSTGRES_DB}"]
interval: 5s
timeout: 5s
retries: 10
livekit:
image: livekit/livekit-server:v1.9.10
command: --config /etc/livekit.yaml
volumes:
- ./infra/livekit/livekit.yaml:/etc/livekit.yaml:ro
environment:
LIVEKIT_KEYS: "${LIVEKIT_API_KEY}: ${LIVEKIT_API_SECRET}"
ports:
- "127.0.0.1:7880:7880"
- "7881:7881"
- "50000-50100:50000-50100/udp"
api:
image: screenshare-api:${SCREENSHARE_VERSION:-latest}
build:
context: ./apps/ScreenShareApi
env_file: .env
environment:
PORT: 8080
LIVEKIT_API_KEY: ${LIVEKIT_API_KEY}
LIVEKIT_API_SECRET: ${LIVEKIT_API_SECRET}
LIVEKIT_PUBLIC_URL: ${LIVEKIT_PUBLIC_URL:-ws://localhost:7880}
DATABASE_JDBC_URL: jdbc:postgresql://postgres:5432/${POSTGRES_DB}
DATABASE_USER: ${POSTGRES_USER}
DATABASE_PASSWORD: ${POSTGRES_PASSWORD}
AUTH_JWT_ISSUER: ${AUTH_JWT_ISSUER}
AUTH_JWT_AUDIENCE: ${AUTH_JWT_AUDIENCE}
AUTH_JWT_REALM: ${AUTH_JWT_REALM}
AUTH_JWT_SECRET: ${AUTH_JWT_SECRET}
CORS_ALLOWED_ORIGINS: ${CORS_ALLOWED_ORIGINS:-http://localhost:5173}
BOOTSTRAP_ADMIN_USERNAME: ${BOOTSTRAP_ADMIN_USERNAME}
BOOTSTRAP_ADMIN_PASSWORD: ${BOOTSTRAP_ADMIN_PASSWORD}
BOOTSTRAP_ADMIN_DISPLAY_NAME: ${BOOTSTRAP_ADMIN_DISPLAY_NAME}
depends_on:
livekit:
condition: service_started
postgres:
condition: service_healthy
ports:
- "127.0.0.1:8080:8080"
gateway:
image: nginx:1.27-alpine
depends_on:
- api
- livekit
volumes:
- ./web:/usr/share/nginx/html:ro
- ./infra/nginx/gateway.conf:/etc/nginx/conf.d/default.conf:ro
ports:
# The external Nginx server connects to this port over the private network.
- "${GATEWAY_BIND_ADDRESS:-0.0.0.0}:8081:80"
volumes:
postgres-data: