summaryrefslogtreecommitdiff
path: root/docker-compose-dev.yml
blob: df8b97fe831b5e7329a4ab0e34c282a9f159bccb (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
140
141
142
143
144
145
146
147
148
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
    ports:
      - "5432:5432"
    environment:
      - POSTGRES_USER=${POSTGRES_USER:-postgres}
      - POSTGRES_PASSWORD=${POSTGRES_PASSWORD:-password}
    volumes:
      - postgres-data-dev:/var/lib/postgresql/data

  redis:
    image: redis:6.2-alpine
    container_name: redis
    restart: unless-stopped
    ports:
      - "6379:6379"
    volumes:
      - redis-data-dev:/data
      - ./data/redis/conf/redis.conf:/usr/local/etc/redis/redis.conf
      - ./data/certbot/conf/:/etc/letsencrypt
#    command: ["redis-server", "/usr/local/etc/redis/redis.conf"]
    command: ["redis-server", "--appendonly", "yes"]

  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
    ports:
      - "80:80"
      - "443:443"
    environment:
      - NGINX_HOSTNAME=${URL_HOST:-xlab.blindside-dev.com}
    volumes:
      - ./log/proxy-nginx/:/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
    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;'"

  scalelite-recordings:
    image: ${SCALELITE_RECORDINGS_DOCKER_IMAGE:-bigbluebutton/bbb-playback-proxy:bionic-230-alpine}
    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.1}
    container_name: scalelite-api
    restart: unless-stopped
    env_file:
      - .env
    environment:
      - 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}
      - RAILS_LOG_TO_STDOUT=${RAILS_LOG_TO_STDOUT}
    volumes:
      - ./log/scalelite-api/:/srv/scalelite/log/
      - ${SCALELITE_RECORDING_DIR-/mnt/scalelite-recordings/var/bigbluebutton}:/var/bigbluebutton
    depends_on:
      - postgres
      - redis
    logging:
      driver: journald

  scalelite-poller:
    image: ${SCALELITE_DOCKER_IMAGE:-blindsidenetwks/scalelite:v1.1}
    container_name: scalelite-poller
    restart: unless-stopped
    env_file:
      - .env
    environment:
      - REDIS_URL=${REDIS_URL:-redis://redis:6379}
      - SERVER_ID_IS_HOSTNAME=${SERVER_ID_IS_HOSTNAME-false}
      - RAILS_LOG_TO_STDOUT=${RAILS_LOG_TO_STDOUT}
    volumes:
      - ./log/scalelite-poller/:/app/log
    command: /bin/sh -c "bin/start-poller"
    depends_on:
      - scalelite-api
    logging:
      driver: journald

  scalelite-recording-importer:
    image: ${SCALELITE_DOCKER_IMAGE:-blindsidenetwks/scalelite:v1.1}
    container_name: scalelite-recording-importer
    restart: unless-stopped
    env_file:
      - .env
    environment:
      - DATABASE_URL=${DATABASE_URL:-postgres://postgres:password@postgres:5432/scalelite?pool=5}
      - RECORDING_DISABLED=false
      - RAILS_LOG_TO_STDOUT=${RAILS_LOG_TO_STDOUT}
    volumes:
      - ./log/scalelite-recording-importer/:/app/log
      - ${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