summaryrefslogtreecommitdiff
path: root/docker-compose-dev.yml
blob: b144f7cdef1c525295910c1770cc375611ac6bc8 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
version: '3'

volumes:
  postgres-data-dev:
    driver: local
    driver_opts:
      type: 'none'
      o: 'bind'
      device: '${DOCKER_VOL_POSTGRES_DATA}'
  redis-data-dev:
    driver: local
    driver_opts:
      type: 'none'
      o: 'bind'
      device: '${DOCKER_VOL_REDIS_DATA}'
  scalelite-api-dev:
    driver: local
    driver_opts:
      type: 'none'
      o: 'bind'
      device: '${DOCKER_VOL_SCALELITE_API}'

services:
  postgres:
    image: postgres:11-alpine
    container_name: postgres
    restart: unless-stopped
    volumes:
      - postgres-data-dev:/var/lib/postgresql/data
    ports:
      - "5432:5432"
    environment:
      - POSTGRES_USER=${POSTGRES_USER:-postgres}
      - POSTGRES_PASSWORD=${POSTGRES_PASSWORD:-password}

  redis:
    image: redis:5.0-alpine
    command: ["redis-server", "--appendonly", "yes"]
    container_name: redis
    restart: unless-stopped
    volumes:
      - redis-data-dev:/data
    ports:
      - "6379:6379"

  certbot:
    image: certbot/certbot
    container_name: certbot
    volumes:
      - ./log/certbot/:/var/log/letsencrypt
      - ./data/certbot/conf/:/etc/letsencrypt
      - ./data/certbot/www/:/var/www/certbot
    entrypoint: "/bin/sh -c 'trap exit TERM; while :; do certbot renew; sleep 12h & wait $${!}; done;'"

  scalelite-proxy:
    image: nginx:1.18
    container_name: scalelite-proxy
    restart: unless-stopped
    volumes:
      - ./data/proxy/nginx/log/:/var/log/nginx
      - ./data/proxy/nginx/sites.template.${DOCKER_PROXY_NGINX_TEMPLATE:-scalelite-proxy}:/etc/nginx/sites.template
      - ./data/proxy/nginx/sites-common:/etc/nginx/sites-common
      - ./data/certbot/conf/:/etc/letsencrypt
      - ./data/certbot/www/:/var/www/certbot
    ports:
      - "80:80"
      - "443:443"
    environment:
      - NGINX_HOSTNAME=${URL_HOST:-xlab.blindside-dev.com}
    depends_on:
      - certbot
      - scalelite-api
      - scalelite-recordings
    command: /bin/bash -c "envsubst '$$NGINX_HOSTNAME' < /etc/nginx/sites.template > /etc/nginx/conf.d/default.conf && exec nginx -g 'daemon off;'"
    logging:
      driver: journald

  scalelite-recordings:
    image: bigbluebutton/bbb-playback-proxy:bionic-23-dev-alpine3.11
    container_name: scalelite-recordings
    restart: unless-stopped
    volumes:
      - ./log/recordings/:/var/log/nginx
      - ${SCALELITE_RECORDING_DIR-/mnt/scalelite-recordings/var/bigbluebutton}/published:/var/bigbluebutton/published
    depends_on:
      - scalelite-api

  scalelite-api:
    image: ${SCALELITE_DOCKER_IMAGE:-blindsidenetwks/scalelite:v1.0}
    container_name: scalelite-api
    restart: unless-stopped
    volumes:
      - ./log/scalelite/:/app/log
      - ${SCALELITE_RECORDING_DIR-/mnt/scalelite-recordings/var/bigbluebutton}:/var/bigbluebutton
    environment:
      - SECRET_KEY_BASE=${SECRET_KEY_BASE}
      - LOADBALANCER_SECRET=${LOADBALANCER_SECRET}
      - REDIS_URL=${REDIS_URL:-redis://redis:6379}
      - DATABASE_URL=${DATABASE_URL:-postgres://postgres:password@postgres:5432/scalelite?pool=5}
      - RECORDING_DISABLED=${RECORDING_DISABLED-false}
      - SERVER_ID_IS_HOSTNAME=${SERVER_ID_IS_HOSTNAME-false}
    depends_on:
      - postgres
      - redis
    logging:
      driver: journald

  scalelite-poller:
    image: ${SCALELITE_DOCKER_IMAGE:-blindsidenetwks/scalelite:v1.0}
    container_name: scalelite-poller
    restart: unless-stopped
    environment:
      - REDIS_URL=${REDIS_URL:-redis://redis:6379}
      - DATABASE_URL=${DATABASE_URL:-postgres://postgres:password@postgres:5432/scalelite?pool=5}
      - SERVER_ID_IS_HOSTNAME=${SERVER_ID_IS_HOSTNAME-false}
    command: /bin/sh -c "bin/start-poller"
    depends_on:
      - scalelite-api
    logging:
      driver: journald

  scalelite-recording-importer:
    image: ${SCALELITE_DOCKER_IMAGE:-blindsidenetwks/scalelite:v1.0}
    container_name: scalelite-recording-importer
    restart: unless-stopped
    environment:
      - REDIS_URL=${REDIS_URL:-redis://redis:6379}
      - DATABASE_URL=${DATABASE_URL:-postgres://postgres:password@postgres:5432/scalelite?pool=5}
      - RECORDING_DISABLED=false
    volumes:
      - ${SCALELITE_RECORDING_DIR-/mnt/scalelite-recordings/var/bigbluebutton}:/var/bigbluebutton
      - ${SCALELITE_RECORDING_DIR-/mnt/scalelite-recordings/var/bigbluebutton}/spool:/var/bigbluebutton/spool
    command: /bin/sh -c "bin/start-recording-importer"
    depends_on:
      - postgres
      - redis
      - scalelite-api
    logging:
      driver: journald