deployment/docker-compose.yml
2025-01-27 16:16:58 +00:00

181 lines
4.7 KiB
YAML

services:
ergo:
container_name: ergo
image: ergo
environment:
ERGO__DATASTORE__MYSQL__PASSWORD: ${ERGO__DATASTORE__MYSQL__PASSWORD}
ERGO__SERVER__IP_CLOAKING__NETNAME: ${ERGO__SERVER__IP_CLOAKING__NETNAME}
ERGO__SERVER__OVERRIDE_SERVICES_HOSTNAME: ${ERGO__SERVER__OVERRIDE_SERVICES_HOSTNAME}
ERGO__SERVER__NAME: ${ERGO__SERVER__NAME}
ERGO__NETWORK__NAME: ${ERGO__NETWORK__NAME}
ERGO__CEF__IMAGOR__URL: ${ERGO__CEF__IMAGOR__URL}
ERGO__CEF__IMAGOR__SECRET: ${ERGO__CEF__IMAGOR__SECRET}
IMAGOR_SECRET: ${IMAGOR_SECRET}
IMAGOR_URL: ${IMAGOR_URL}
networks:
- cef
volumes:
- ergodata:/ircd/persist
- ${PWD}/certs:/ircd/certs
- type: bind
source: ${PWD}/configs/ergo/ircd.yaml
target: /ircd/ircd.yaml
read_only: true
- type: bind
source: ${PWD}/configs/ergo/ircd.motd
target: /ircd/ircd.motd
depends_on:
mariadb:
condition: service_healthy
restart: "always"
3m:
container_name: 3m
image: 3m
environment:
THREEM_MINIO_EXTERNAL_ADDR: ${THREEM_MINIO_EXTERNAL_ADDR}
THREEM_MINIO_ACCESS_KEY: ${THREEM_MINIO_ACCESS_KEY}
THREEM_MINIO_SECRET_KEY: ${THREEM_MINIO_SECRET_KEY}
THREEM_DBURL: ${THREEM_DBURL}
THREEM_MEDIAMTX_API: ${THREEM_MEDIAMTX_API}
THREEM_MEDIAMTX_RTSP: ${THREEM_MEDIAMTX_RTSP}
networks:
- cef
volumes:
- type: bind
source: ${PWD}/certs/3m.pub
target: /3m/keys/3m.pub
- type: bind
source: ${PWD}/configs/3m/config.py
target: /3m/config.py
depends_on:
- ergo
restart: "always"
mediamtx:
container_name: mediamtx
image: mediamtx
command: /mediamtx/mediamtx.yaml
environment:
MTX_WEBRTCADDITIONALHOSTS: ${MTX_WEBRTCADDITIONALHOSTS}
MTX_WEBRTCICESERVERS2_0_URL: "turn:${VIDEO_DOMAIN}:3478"
MTX_WEBRTCICESERVERS2_0_USERNAME: "AUTH_SECRET"
MTX_WEBRTCICESERVERS2_0_PASSWORD: ${COTURN_PASSWORD}
networks:
- cef
ports:
- "8189:8189/tcp"
- "8189:8189/udp"
volumes:
- type: bind
source: ${PWD}/configs/mediamtx/mediamtx.yaml
target: /mediamtx/mediamtx.yaml
restart: "always"
coturn:
container_name: coturn
image: "ghcr.io/coturn/coturn:edge-alpine"
network_mode: "host"
environment:
DETECT_EXTERNAL_IP: "yes"
DETECT_RELAY_IP: "yes"
COTURN_LOGIN: ${COTURN_LOGIN}
restart: "always"
ports:
- "3478:3478"
- "3478:3478/udp"
- "5349:5349"
- "5349:5349/udp"
- "49152-65535:49152-65535/udp"
command: "--fingerprint --use-auth-secret --static-auth-secret ${COTURN_PASSWORD} --realm cef.icu"
grumble:
container_name: grumble
image: grumble
environment:
GRUMBLE_ERGO_ADDR: "ergo"
networks:
- cef
volumes:
- type: bind
source: ${PWD}/certs/grumble.pub
target: /data/jwtpub.pem
depends_on:
- ergo
restart: "always"
minio:
container_name: minio
image: docker.io/minio/minio
command: server /data
environment:
MINIO_ROOT_USER: ${MINIO_ROOT_USER}
MINIO_ROOT_PASSWORD: ${MINIO_ROOT_PASSWORD}
networks:
- cef
volumes:
- miniodata:/data
restart: "always"
redis:
container_name: redis
image: docker.io/redis:7.2.5-alpine
networks:
- cef
restart: "always"
caddy:
container_name: caddy
image: docker.io/caddy:2.8.4-alpine
cap_add:
- NET_ADMIN
environment:
DOMAIN: ${DOMAIN}
HOST_DOMAIN: ${HOST_DOMAIN}
ports:
- "80:80"
- "443:443"
- "443:443/udp"
networks:
- cef
volumes:
- caddydata:/data
- caddyconfig:/config
- ${PWD}/www:/srv
- type: bind
source: ${PWD}/configs/caddy/Caddyfile
target: /etc/caddy/Caddyfile
restart: "always"
mariadb:
container_name: mariadb
image: docker.io/mariadb:11-ubi9
restart: always
environment:
MARIADB_ROOT_PASSWORD: ${MYSQL_PASSWORD}
networks:
- cef
volumes:
- mariadbdata:/var/lib/mysql
- ${PWD}/configs/mariadb:/docker-entrypoint-initdb.d
healthcheck:
test: ["CMD", "healthcheck.sh", "--connect", "--innodb_initialized"]
start_period: 10s
interval: 10s
timeout: 5s
retries: 3
imagor:
container_name: imagor
image: git.cef.icu/cef/imagorvideoextended:latest
environment:
IMAGOR_SECRET: ${IMAGOR_SECRET}
IMAGOR_SIGNER_TYPE: "sha256"
DEBUG: "1"
networks:
- cef
networks:
cef:
volumes:
ergodata:
external: true
miniodata:
external: true
mariadbdata:
external: true
caddyconfig:
caddydata:
external: true