LiveKit offers Universal Egress, designed to provide universal exports of LiveKit sessions or tracks to a file or stream data. Egress is kept outside of the server to keep the load off the SFU and avoid impacting real-time audio or video performance/quality. Followed the "Running Locally" steps from the https://github.com/livekit/egress repository, but I adapted them to docker-compose. By default, I chose to run both the LiveKit server and the Egress when you up the stack. If we see any performance issue, we could only run the LiveKit server, which is the barebone of the product. Egress will be usefull only when dealing with recording/exporting data. Egress service will output file recordings to "./docker/livekit/out" Note: the Egress service doesn't run as root. You need to update the "/out" permissions, so all user could write to it.
176 lines
3.9 KiB
YAML
176 lines
3.9 KiB
YAML
version: '3.8'
|
|
|
|
services:
|
|
postgresql:
|
|
image: postgres:16
|
|
env_file:
|
|
- env.d/development/postgresql
|
|
ports:
|
|
- "15432:5432"
|
|
|
|
redis:
|
|
image: redis:5
|
|
|
|
mailcatcher:
|
|
image: sj26/mailcatcher:latest
|
|
ports:
|
|
- "1081:1080"
|
|
|
|
app-dev:
|
|
build:
|
|
context: .
|
|
target: backend-development
|
|
args:
|
|
DOCKER_USER: ${DOCKER_USER:-1000}
|
|
user: ${DOCKER_USER:-1000}
|
|
image: meet:backend-development
|
|
environment:
|
|
- PYLINTHOME=/app/.pylint.d
|
|
- DJANGO_CONFIGURATION=Development
|
|
env_file:
|
|
- env.d/development/common
|
|
- env.d/development/postgresql
|
|
ports:
|
|
- "8071:8000"
|
|
volumes:
|
|
- ./src/backend:/app
|
|
- ./data/static:/data/static
|
|
depends_on:
|
|
- postgresql
|
|
- mailcatcher
|
|
- redis
|
|
- nginx
|
|
- livekit
|
|
|
|
celery-dev:
|
|
user: ${DOCKER_USER:-1000}
|
|
image: meet:backend-development
|
|
command: ["celery", "-A", "meet.celery_app", "worker", "-l", "DEBUG"]
|
|
environment:
|
|
- DJANGO_CONFIGURATION=Development
|
|
env_file:
|
|
- env.d/development/common
|
|
- env.d/development/postgresql
|
|
volumes:
|
|
- ./src/backend:/app
|
|
- ./data/static:/data/static
|
|
depends_on:
|
|
- app-dev
|
|
|
|
app:
|
|
build:
|
|
context: .
|
|
target: backend-production
|
|
args:
|
|
DOCKER_USER: ${DOCKER_USER:-1000}
|
|
user: ${DOCKER_USER:-1000}
|
|
image: meet:backend-production
|
|
environment:
|
|
- DJANGO_CONFIGURATION=Demo
|
|
env_file:
|
|
- env.d/development/common
|
|
- env.d/development/postgresql
|
|
depends_on:
|
|
- postgresql
|
|
- redis
|
|
- livekit
|
|
|
|
celery:
|
|
user: ${DOCKER_USER:-1000}
|
|
image: meet:backend-production
|
|
command: ["celery", "-A", "meet.celery_app", "worker", "-l", "INFO"]
|
|
environment:
|
|
- DJANGO_CONFIGURATION=Demo
|
|
env_file:
|
|
- env.d/development/common
|
|
- env.d/development/postgresql
|
|
depends_on:
|
|
- app
|
|
|
|
nginx:
|
|
image: nginx:1.25
|
|
ports:
|
|
- "8083:8083"
|
|
volumes:
|
|
- ./docker/files/etc/nginx/conf.d:/etc/nginx/conf.d:ro
|
|
depends_on:
|
|
- keycloak
|
|
|
|
dockerize:
|
|
image: jwilder/dockerize
|
|
|
|
crowdin:
|
|
image: crowdin/cli:3.16.0
|
|
volumes:
|
|
- ".:/app"
|
|
env_file:
|
|
- env.d/development/crowdin
|
|
user: "${DOCKER_USER:-1000}"
|
|
working_dir: /app
|
|
|
|
node:
|
|
image: node:18
|
|
user: "${DOCKER_USER:-1000}"
|
|
environment:
|
|
HOME: /tmp
|
|
volumes:
|
|
- ".:/app"
|
|
|
|
kc_postgresql:
|
|
image: postgres:14.3
|
|
ports:
|
|
- "5433:5432"
|
|
env_file:
|
|
- env.d/development/kc_postgresql
|
|
|
|
keycloak:
|
|
image: quay.io/keycloak/keycloak:20.0.1
|
|
volumes:
|
|
- ./docker/auth/realm.json:/opt/keycloak/data/import/realm.json
|
|
command:
|
|
- start-dev
|
|
- --features=preview
|
|
- --import-realm
|
|
- --proxy=edge
|
|
- --hostname-url=http://localhost:8083
|
|
- --hostname-admin-url=http://localhost:8083/
|
|
- --hostname-strict=false
|
|
- --hostname-strict-https=false
|
|
environment:
|
|
KEYCLOAK_ADMIN: admin
|
|
KEYCLOAK_ADMIN_PASSWORD: admin
|
|
KC_DB: postgres
|
|
KC_DB_URL_HOST: kc_postgresql
|
|
KC_DB_URL_DATABASE: keycloak
|
|
KC_DB_PASSWORD: pass
|
|
KC_DB_USERNAME: meet
|
|
KC_DB_SCHEMA: public
|
|
PROXY_ADDRESS_FORWARDING: 'true'
|
|
ports:
|
|
- "8080:8080"
|
|
depends_on:
|
|
- kc_postgresql
|
|
|
|
livekit:
|
|
image: livekit/livekit-server
|
|
entrypoint: /livekit-server --dev --bind 0.0.0.0 --config ./config.yaml
|
|
ports:
|
|
- "7880:7880"
|
|
- "7881:7881"
|
|
- "7882:7882/udp"
|
|
volumes:
|
|
- ./docker/livekit/config/livekit-server.yaml:/config.yaml
|
|
depends_on:
|
|
- redis
|
|
- livekit-egress
|
|
|
|
livekit-egress:
|
|
image: livekit/egress
|
|
environment:
|
|
EGRESS_CONFIG_FILE: ./livekit-egress.yaml
|
|
volumes:
|
|
- ./docker/livekit/config/livekit-egress.yaml:/livekit-egress.yaml
|
|
- ./docker/livekit/out:/out
|
|
depends_on:
|
|
- redis
|