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} 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" web: image: screenshare-web:${SCREENSHARE_VERSION:-latest} build: context: ./apps/ScreenShareWeb depends_on: - api ports: - "127.0.0.1:5173:80" volumes: postgres-data: