-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathcompose.yml
84 lines (84 loc) · 3.01 KB
/
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
configs:
traefik.yaml:
file: ./traefik.yaml
secrets:
cf_token:
file: /secrets/cf_token
services:
traefik:
image: traefik:v3.3
restart: unless-stopped
ports:
- 80:80
- 443:443
extra_hosts:
- "host.docker.internal:host-gateway"
secrets:
- cf_token
volumes:
- /var/run/docker.sock:/var/run/docker.sock
- /secrets/acme.json:/acme.json
configs:
- traefik.yaml
environment:
- CF_DNS_API_TOKEN_FILE=/run/secrets/cf_token
command: --certificatesresolvers.le.acme.email=${ROBOT_ID}@rxsio.com
labels:
- traefik.enable=true
- traefik.http.routers.api.entrypoints=websecure
- traefik.http.routers.api.rule=Host(`traefik.${ROBOT_ID}.rxsio.com`)
- traefik.http.routers.api.service=api@internal
interface:
image: ghcr.io/rxsio/robot-web-interface:nightly
restart: unless-stopped
volumes:
- '/certificates:/certificates'
- '/rover/configuration:/configuration'
- '/rover/exchange:/exchange'
labels:
- "traefik.enable=true"
- "traefik.http.routers.interface_http.entrypoints=web"
- "traefik.http.routers.interface_http.rule=Host(`${ROBOT_ID}.rxsio.com`)"
- "traefik.http.routers.interface_http.service=interface_80"
- "traefik.http.routers.interface_https.rule=Host(`${ROBOT_ID}.rxsio.com`)"
- "traefik.http.routers.interface_https.entrypoints=websecure"
- "traefik.http.routers.interface_https.service=interface_443"
- "traefik.http.services.interface_80.loadbalancer.server.port=80"
- "traefik.http.services.interface_443.loadbalancer.server.port=443"
cameras:
image: ghcr.io/rxsio/webrtc-camera-server:nightly
restart: unless-stopped
network_mode: host # Required to expose wide range of ephemeral ports for WebRTC
environment:
- 'true'
privileged: true
volumes:
- '/run/udev:/run/udev:ro'
- '/dev:/dev'
- '/certificates:/certificates'
- '/rover/configuration:/configuration'
- '/rover/exchange:/exchange'
labels:
- "traefik.enable=true"
- "traefik.http.routers.webrtc_signaling.rule=Host(`webrtc.${ROBOT_ID}.rxsio.com`)"
- "traefik.http.routers.webrtc_signaling.entrypoints=websecure"
- "traefik.http.routers.webrtc_signaling.service=webrtc_8082"
- "traefik.http.services.webrtc_8082.loadbalancer.server.port=8082"
ros:
image: ghcr.io/rxsio/firo_robot:humble
restart: unless-stopped
network_mode: host
ipc: host
privileged: true # This is intentional
volumes:
- '/rover/configuration:/configuration'
- '/rover/exchange:/exchange'
devices:
- '/dev:/dev'
environment:
- ROS_LOCALHOST_ONLY=1
labels:
- "traefik.enable=true"
- "traefik.http.routers.ros_http.rule=Host(`ros.${ROBOT_ID}.rxsio.com`)"
- "traefik.http.routers.ros_http.entrypoints=websecure"
- "traefik.http.services.ros_8081.loadbalancer.server.port=8081"