-
Notifications
You must be signed in to change notification settings - Fork 0
/
docker-compose.yml
110 lines (110 loc) · 4.47 KB
/
docker-compose.yml
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
version: "3"
services:
janus:
build:
context: ./docker/docker-janus
image: "ptsneves/airborneprojects:janus"
# We need host mode to expose the ports for the sfu, otherwise video will not
# work. Declaring a huge range of ports is not really feasible as it takes a long
# time with docker
network_mode: host
volumes:
- ${VIDEO_STORAGE_VOL_NAME:-live-video-storage}:/var/live-video-storage
logging:
options:
max-file: "5"
max-size: "100m"
web:
container_name: drohub-web
extra_hosts:
# new trick so that nginx has access to janus which has network_host mode
# see https://stackoverflow.com/a/24326540/227990
# this makes a dependency on docker 18.03+
- "host.docker.internal:host-gateway"
build:
context: .
dockerfile: docker/docker-dotnet/Dockerfile
image: "ptsneves/airborneprojects:release-master"
environment:
# The following variables are to be overriden by .env file
# The reason for the DHUB_ prefix is that code looks for it and
# automatically forwards environmental variables with such prefix
# to the configurations and overrides them.
# In our case it means that the configuration in appsettings.json
# Conf.ConnectionStrings.DroHubConnectionMySQL gets overwritten
# As the configurations in appsettings for secrets mostly have @@ENV@@
# placeholder we need to forcefully overwrite these configurations or
# things will not work properly.
DHUB_ConnectionStrings__DroHubConnectionMySQL: 'Server=drohub-database;port=3306;database=master'
DHUB_ConnectionStrings__MysqlUser: "${DHUB_ConnectionStrings__MysqlUser?}"
DHUB_ConnectionStrings__MysqlPassword: "${DHUB_ConnectionStrings__MysqlPassword?}"
DHUB_MailJetEmailSender__APIKey: "${DHUB_MailJetEmailSender__APIKey?}"
DHUB_MailJetEmailSender__APISecret: "${DHUB_MailJetEmailSender__APISecret?}"
DHUB_RepositoriesConfiguration__GoogleMapsAPIKey: "${DHUB_RepositoriesConfiguration__GoogleMapsAPIKey?}"
DHUB_JanusServiceOptions__AdminKey: "${DHUB_JanusServiceOptions__AdminKey?}"
DHUB_JanusServiceOptions__Address: "http://host.docker.internal"
ports:
- "5000:5000"
depends_on:
- "database"
- "janus"
restart: on-failure
volumes:
- ${VIDEO_STORAGE_VOL_NAME:-live-video-storage}:/var/live-video-storage
logging:
options:
max-file: "5"
max-size: "100m"
database:
container_name: drohub-database
image: mysql:latest
ports:
- "3306:3306"
environment:
MYSQL_DATABASE: "master"
MYSQL_RANDOM_ROOT_PASSWORD: "yes"
# Mandatory secrets
MYSQL_USER: "${DHUB_ConnectionStrings__MysqlUser?}"
MYSQL_PASSWORD: "${DHUB_ConnectionStrings__MysqlPassword?}"
volumes:
- mysql-volume:/var/lib/mysql
letsencrypt:
environment:
- DOMAIN=localhost
build:
context: ./docker/docker-letsencrypt
image: ptsneves/airborneprojects:letsencrypt
volumes:
- certificates-volume:/etc/letsencrypt
nginx:
extra_hosts:
# new trick so that nginx has access to janus which has network_host mode
# see https://stackoverflow.com/a/24326540/227990
# this makes a dependency on docker 18.03+
- "host.docker.internal:host-gateway"
ports:
- "443:443"
- "80:80"
build:
context: ./docker/docker-nginx
image: ptsneves/airborneprojects:nginx
volumes:
- certificates-volume:/etc/letsencrypt
logging:
options:
max-file: "5"
max-size: "100m"
environment:
- DOMAIN_NAME
- SSL_CERTIFICATE_PATH=/etc/letsencrypt/live/${DOMAIN_NAME?}/fullchain.pem
- SSL_CERTIFICATE_KEY_PATH=/etc/letsencrypt/live/${DOMAIN_NAME?}/privkey.pem
- TIMEOUT_SECONDS=100
- DEPENDENCY_FQDN=drohub-web
- DEPENDENCY_PORT=5000
volumes:
certificates-volume:
driver: local
live-video-storage:
driver: local
mysql-volume:
driver: local