-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathdocker-compose.yaml
172 lines (158 loc) · 5.4 KB
/
docker-compose.yaml
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
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
version: "3.8"
services:
proxy:
image: traefik:2.10.4
labels:
- traefik.http.routers.api.rule=Host(`traefik.${BASE_DOMAIN}`)
- traefik.http.routers.api.entrypoints=http
- traefik.http.routers.api.service=api@internal
ports:
- 80:80
- 8000:8000
volumes:
- ./traefik.yml:/traefik.yml
- /var/run/docker.sock:/var/run/docker.sock
console:
image: "ghcr.io/infinimesh/infinimesh/console:${INFINIMESH_VERSION}"
restart: always
depends_on:
- proxy
- web
labels:
- traefik.http.routers.console.rule=Host(`console.${BASE_DOMAIN}`)
- traefik.http.routers.console.entrypoints=http
- traefik.http.routers.console.service=console@docker
- traefik.http.services.console.loadbalancer.server.port=80
web:
image: "ghcr.io/infinimesh/infinimesh/web:${INFINIMESH_VERSION}"
restart: always
depends_on:
- repo
- proxy
labels:
- traefik.http.routers.web.rule=Host(`api.${BASE_DOMAIN}`)
- traefik.http.routers.web.entrypoints=http
- traefik.http.routers.web.service=web@docker
- traefik.http.services.web.loadbalancer.server.port=8000
environment:
APISERVER_HOST: repo:8000
HTTP_FS: "http://media.${BASE_DOMAIN}"
HANDSFREE: handsfree:8000
rabbitmq:
image: rabbitmq:3.9-management
labels:
- traefik.http.routers.rabbitmq.rule=Host(`rbmq.${BASE_DOMAIN}`)
- traefik.http.routers.rabbitmq.entrypoints=http
- traefik.http.services.rabbitmq.loadbalancer.server.port=15672
ports:
- 5672:5672
environment:
RABBITMQ_DEFAULT_USER: "${RABBITMQ_USER}"
RABBITMQ_DEFAULT_PASS: "${RABBITMQ_PASS}"
mqtt:
image: "ghcr.io/infinimesh/infinimesh/mqtt-bridge:${INFINIMESH_VERSION}"
restart: always
depends_on:
- rabbitmq
- repo
- proxy
ports:
- 1883:1883 # BasicAuth(non-TLS)
- 8883:8883 # Standard(TLS)
- 2112:2112 # Metrics
volumes:
- ./hack/server.crt:/cert/tls.crt
- ./hack/server.key:/cert/tls.key
environment:
LOG_LEVEL: ${LOG_LEVEL}
RABBITMQ_CONN: amqp://${RABBITMQ_USER}:${RABBITMQ_PASS}@rabbitmq:5672/
DEVICES_HOST: repo:8000
SHADOW_HOST: shadow:8000
SIGNING_KEY: "${SIGNING_KEY}"
repo:
image: "ghcr.io/infinimesh/infinimesh/repo:${INFINIMESH_VERSION}"
restart: always
labels:
- traefik.http.routers.repo.rule=Host(`api.${BASE_DOMAIN}`)
- traefik.http.routers.repo.entrypoints=grpc
- traefik.http.routers.repo.service=repo@docker
- traefik.http.services.repo.loadbalancer.server.port=8000
- traefik.http.services.repo.loadbalancer.server.scheme=h2c
- traefik.http.routers.repo_connect.rule=Host(`api.${BASE_DOMAIN}`)&&PathPrefix("/infinimesh.node.", "/infinimesh.shadow", "/infinimesh.plugins", "/oauth")
- traefik.http.routers.repo_connect.entrypoints=http
- traefik.http.routers.repo_connect.service=repo_connect@docker
- traefik.http.services.repo_connect.loadbalancer.server.port=8000
depends_on:
- db
- proxy
environment:
LOG_LEVEL: ${LOG_LEVEL}
DB_HOST: db:8529
DB_CRED: root:openSesame
SHADOW_HOST: shadow:8000
INF_DEFAULT_ROOT_PASS: infinimesh
SIGNING_KEY: "${SIGNING_KEY}"
HANDSFREE_HOST: handsfree:8000
OAUTH_PORT: 80
REGISTRY_HOST: repo:8000
NAMESPACES_HOST: repo:8000
CORS_ALLOWED: "https://*.${BASE_DOMAIN},https://*"
volumes:
- ./oauth2_config.yaml:/oauth2_config.yaml
shadow:
image: "ghcr.io/infinimesh/infinimesh/shadow:${INFINIMESH_VERSION}"
restart: unless-stopped
labels:
- traefik.enable=false
depends_on:
- redis
- rabbitmq
environment:
LOG_LEVEL: ${LOG_LEVEL}
RABBITMQ_CONN: amqp://${RABBITMQ_USER}:${RABBITMQ_PASS}@rabbitmq:5672/
REDIS_HOST: redis:6379
DEVICES_HOST: repo:8000
SIGNING_KEY: "${SIGNING_KEY}"
redis:
image: redis:latest
labels:
- traefik.enable=false
ports:
- 6379:6379
command: [ "redis-server", "--appendonly", "yes" ]
db:
image: arangodb/arangodb:latest
restart: always
environment:
ARANGO_ROOT_PASSWORD: openSesame
labels:
- traefik.http.routers.db.rule=Host(`db.${BASE_DOMAIN}`)
- traefik.http.routers.db.entrypoints=http
- traefik.http.services.db.loadbalancer.server.port=8529
volumes:
- data:/var/lib/arangodb3
# Comment this service and HTTP_FS env variable at web service to disable http-fs
http-fs:
image: ghcr.io/infinimesh/http-fs:latest
restart: always
labels:
- traefik.http.routers.http-fs.rule=Host(`media.${BASE_DOMAIN}`)
- traefik.http.routers.http-fs.entrypoints=http
- traefik.http.services.http-fs.loadbalancer.server.port=8000
volumes:
- user-media:/static
# Comment this service and HF env variable at web service to disable handsfree service
handsfree:
image: "ghcr.io/infinimesh/infinimesh/handsfree:${INFINIMESH_VERSION}"
restart: always
environment:
LOG_LEVEL: ${LOG_LEVEL}
SIGNING_KEY: "${SIGNING_KEY}"
labels:
- traefik.http.routers.handsfree.rule=Host(`api.${BASE_DOMAIN}`)&&PathPrefix("/infinimesh.handsfree.")
- traefik.http.routers.handsfree.entrypoints=grpc
- traefik.http.services.handsfree.loadbalancer.server.port=8000
- traefik.http.services.handsfree.loadbalancer.server.scheme=h2c
volumes:
data:
user-media: