bigbluebutton-Github/labs/docker/docker-compose.yml
2018-08-24 17:15:47 -03:00

184 lines
5.2 KiB
YAML

version: '2'
services:
mongo:
image: mongo:3.4
restart: unless-stopped
redis:
image: redis
restart: unless-stopped
bbb-html5:
image: ${TAG_PREFIX}bbb-html5${TAG_SUFFIX}
restart: unless-stopped
depends_on:
- mongo
- redis
environment:
MONGO_URL: mongodb://mongo/bbbhtml5
METEOR_SETTINGS_MODIFIER: ".public.kurento.wsUrl = \"wss://${SERVER_DOMAIN}/bbb-webrtc-sfu\" | .public.kurento.enableVideo = true | .public.kurento.enableScreensharing = true | .public.kurento.chromeDefaultExtensionKey = \"${SCREENSHARE_EXTENSION_KEY}\" | .public.kurento.chromeDefaultExtensionLink = \"${SCREENSHARE_EXTENSION_LINK}\" | .public.kurento.enableVideoStats = true | .public.kurento.enableListenOnly = true"
REDIS_HOST: redis
ROOT_URL: http://127.0.0.1/html5client
labels:
- "traefik.backend=bbb-html5"
- "traefik.frontend.rule=PathPrefix: /html5client,/_timesync"
bbb-webhooks:
image: ${TAG_PREFIX}bbb-webhooks${TAG_SUFFIX}
restart: unless-stopped
depends_on:
- redis
environment:
REDIS_HOST: redis
SHARED_SECRET: ${SHARED_SECRET}
BEARER_AUTH: 1
SERVER_DOMAIN: ${SERVER_DOMAIN}
labels:
- "traefik.backend=bbb-webhooks"
- "traefik.frontend.rule=PathPrefix: /bigbluebutton/api/hooks"
bbb-freeswitch:
image: ${TAG_PREFIX}bbb-freeswitch${TAG_SUFFIX}
restart: unless-stopped
depends_on:
- coturn
volumes:
- media-audio:/var/freeswitch/meetings
bbb-webrtc-sfu:
image: ${TAG_PREFIX}bbb-webrtc-sfu${TAG_SUFFIX}
restart: unless-stopped
depends_on:
- redis
- kurento
- bbb-freeswitch
environment:
KURENTO_NAME: kurento
KURENTO_URL: ws://kurento:8888/kurento
REDIS_HOST: redis
FREESWITCH_IP: bbb-freeswitch
LOG_LEVEL: debug
labels:
- "traefik.backend=bbb-webrtc-sfu"
- "traefik.frontend.rule=PathPrefix: /bbb-webrtc-sfu"
coturn:
image: ${TAG_PREFIX}bbb-coturn${TAG_SUFFIX}
restart: unless-stopped
environment:
TURN_DOMAIN: ${SERVER_DOMAIN}
SECRET: ${COTURN_REST_SECRET}
EXTERNAL_IP: ${EXTERNAL_IP}
ENABLE_REST_API: 1
PORT: 3478
ports:
- 3478:3478/udp
- 3478:3478/tcp
kurento:
image: ${TAG_PREFIX}bbb-kurento${TAG_SUFFIX}
restart: unless-stopped
volumes:
- media-video:/var/kurento/recordings
- media-screenshare:/var/kurento/screenshare
environment:
KMS_STUN_IP: ${EXTERNAL_IP}
KMS_STUN_PORT: 3478
bbb-apps-akka:
image: ${TAG_PREFIX}bbb-apps-akka${TAG_SUFFIX}
restart: unless-stopped
depends_on:
- redis
environment:
JAVA_OPTS: -Dredis.host=redis
bbb-fsesl-akka:
image: ${TAG_PREFIX}bbb-fsesl-akka${TAG_SUFFIX}
restart: unless-stopped
depends_on:
- bbb-freeswitch
- redis
command: ["wait-for-it.sh", "bbb-freeswitch:8021", "--timeout=60", "--strict", "--", "/usr/share/bbb-fsesl-akka/bin/bbb-fsesl-akka"]
environment:
JAVA_OPTS: -Dredis.host=redis -Dfreeswitch.esl.host=bbb-freeswitch
bbb-web:
image: ${TAG_PREFIX}bbb-web${TAG_SUFFIX}
restart: unless-stopped
depends_on:
- redis
volumes:
- bigbluebutton:/var/bigbluebutton
environment:
SERVER_DOMAIN: ${SERVER_DOMAIN}
SHARED_SECRET: ${SHARED_SECRET}
TURN_DOMAIN: ${SERVER_DOMAIN}
TURN_SECRET: ${COTURN_REST_SECRET}
labels:
- "traefik.backend=bbb-web"
- "traefik.frontend.rule=PathPrefix: /bigbluebutton"
bbb-greenlight:
image: bigbluebutton/greenlight:v2
restart: unless-stopped
volumes:
- greenlight_db:/usr/src/app/db/production
- greenlight_logs:/usr/src/app/log
environment:
BIGBLUEBUTTON_ENDPOINT: https://${SERVER_DOMAIN}/bigbluebutton/
BIGBLUEBUTTON_SECRET: ${SHARED_SECRET}
SECRET_KEY_BASE: ${SECRET_KEY_BASE}
ALLOW_GREENLIGHT_ACCOUNTS: "true"
labels:
- "traefik.backend=bbb-greenlight"
- "traefik.frontend.rule=PathPrefix: /b"
# when we're able to setup traefik properly for wss, nginx is no longer needed
nginx:
image: ${TAG_PREFIX}bbb-nginx${TAG_SUFFIX}
restart: unless-stopped
depends_on:
- bbb-freeswitch
environment:
SERVER_DOMAIN: ${SERVER_DOMAIN}
labels:
- "traefik.backend=bbb-freeswitch"
- "traefik.frontend.rule=PathPrefix: /ws"
traefik:
image: traefik
restart: unless-stopped
ports:
- 80:80
- 8080:8080
- 443:443
command: traefik
- --docker
- --logLevel=INFO
- --acme
- --acme.httpchallenge
- --acme.httpchallenge.entrypoint=http
- --acme.acmelogging
- --acme.storage=/etc/traefik/acme/acme.json
- --acme.email=felipe@mconf.com
- --acme.entrypoint=https
- --acme.domains=${SERVER_DOMAIN}
- --defaultentrypoints=http,https
- --entryPoints='Name:http Address::80 Redirect.EntryPoint:https'
- --entryPoints='Name:https Address::443 TLS'
volumes:
- traefik-acme:/etc/traefik/acme/
- /var/run/docker.sock:/var/run/docker.sock
volumes:
traefik-acme:
static:
bigbluebutton:
media-audio:
media-video:
media-screenshare:
greenlight_db:
greenlight_logs: