Repository navigation
Expand file tree
/
Copy pathcompose.yaml
More file actions
111 lines (107 loc) · 3.42 KB
/
Copy pathcompose.yaml
File metadata and controls
111 lines (107 loc) · 3.42 KB
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
# Local dev stack for obby-api.
#
# This service is built from the local checkout; obbyircd and the
# web client are pulled from Dockerhub. For full-stack development
# in one of the other repos, swap which service has `build:` and
# which has only `image:`.
#
# docker compose up -d # api + obbyircd
# docker compose --profile frontend up -d # + obby (web)
services:
obby-api:
build:
context: .
dockerfile: ./Dockerfile
image: ${OBBY_API_IMAGE:-obby-api:local}
container_name: obby-api
restart: unless-stopped
depends_on:
obbyircd:
condition: service_healthy
expose:
- "8080"
ports:
- "${TURN_PORT:-3478}:3478/udp"
volumes:
- ${OBBY_API_DATA_BIND:-obby_api_data}:/app/data
- ${OBBY_API_IMAGES_BIND:-obby_api_images}:/app/images
- ${VOICE_BRIDGE_BIND:-obbyircd_voice_bridge}:/run/obbyirc
environment:
PORT: "8080"
VOICE_BRIDGE_SOCKET: /run/obbyirc/voice.sock
VOICE_TURN_SECRET: ${VOICE_TURN_SECRET}
VOICE_PUBLIC_IP: ${VOICE_PUBLIC_IP}
VOICE_TURN_PORT: "${TURN_PORT:-3478}"
VOICE_TURN_REALM: ${VOICE_TURN_REALM:-obby}
VOICE_MAX_ROOM: "${VOICE_MAX_ROOM:-25}"
JWT_SECRET: ${JWT_SECRET}
IRC_SERVER_KEY: ${IRC_SERVER_KEY}
UNREALIRCD_WS_URL: ${UNREALIRCD_WS_URL:-ws://obbyircd:8080}
UNREALIRCD_API_USERNAME: ${UNREALIRCD_API_USERNAME:-admin}
UNREALIRCD_API_PASSWORD: ${RPC_PASSWORD}
FILEHOST_PUBLIC_URL: ${FILEHOST_PUBLIC_URL}
env_file:
- path: .env
required: false
labels:
- traefik.enable=true
- traefik.http.routers.api.rule=Host(`${API_FQDN}`)
- traefik.http.routers.api.tls=true
- traefik.http.services.api.loadbalancer.server.port=8080
obbyircd:
image: ${OBBYIRCD_IMAGE:-obbyworld/obbyircd:latest}
container_name: obbyircd
restart: unless-stopped
expose:
- "8080"
ports:
- "${SSL_HOST_PORT:-6697}:${SSL_PORT:-6697}"
volumes:
- obbyircd_conf:/home/obbyircd/obby/conf
- obbyircd_data:/home/obbyircd/obby/data
- obbyircd_logs:/home/obbyircd/obby/logs
- obbyircd_tls:/home/obbyircd/obby/tls
- obbyircd_custom_modules:/home/obbyircd/obby/custom-modules
- ${VOICE_BRIDGE_BIND:-obbyircd_voice_bridge}:/run/obbyirc
environment:
WS_PORT: "${WS_PORT:-8080}"
SSL_PORT: "${SSL_PORT:-6697}"
VOICE_BRIDGE_SOCKET: /run/obbyirc/voice.sock
env_file:
- path: .env
required: false
healthcheck:
test: ["CMD-SHELL", "nc -z localhost ${WS_PORT:-8080}"]
interval: 5s
timeout: 5s
retries: 6
start_period: 30s
labels:
- traefik.enable=true
- traefik.http.routers.obbyircd.rule=Host(`${IRC_FQDN}`)
- traefik.http.routers.obbyircd.tls=true
- traefik.http.services.obbyircd.loadbalancer.server.port=8080
obby:
image: ${OBBY_WEB_IMAGE:-obbyworld/obby:latest}
container_name: obby-web
restart: unless-stopped
profiles: ["frontend"]
expose:
- "80"
env_file:
- path: .env
required: false
labels:
- traefik.enable=true
- traefik.http.routers.web.rule=Host(`${WEB_FQDN}`)
- traefik.http.routers.web.tls=true
- traefik.http.services.web.loadbalancer.server.port=80
volumes:
obby_api_data:
obby_api_images:
obbyircd_conf:
obbyircd_data:
obbyircd_logs:
obbyircd_tls:
obbyircd_custom_modules:
obbyircd_voice_bridge: