television/docker-compose.yml.dist

105 lines
2.3 KiB
Plaintext

version: '3'
networks:
net:
external: false
services:
haproxy:
image: haproxy:lts
ports:
- "80:80"
- "443:443"
volumes:
- "./data/certificates:/certificates"
- "./config/haproxy:/usr/local/etc/haproxy"
depends_on:
- "certbot"
- "restreamer"
- "scheduler"
restart: unless-stopped
networks:
- net
labels:
- meta.role=haproxy
certbot:
image: "certbot/certbot"
hostname: certbot
volumes:
- "./data/certificates:/certificates"
- "./data/certbot/etc:/etc/letsencrypt"
- "./data/certbot/var:/var/lib/letsencrypt"
- "./logs/certbot:/var/log/letsencrypt"
restart: unless-stopped
networks:
- net
labels:
- meta.role=certbot
#entrypoint: sh -c 'while true; do sleep 1; done'
entrypoint: "/bin/sh -c 'trap exit TERM; while :; do certbot renew; sleep 15d & wait $${!}; done;'"
restreamer:
image: datarhei/restreamer:2.7.0
environment:
- CORE_LOG_LEVEL=warn
- CORE_API_AUTH_USERNAME=admin
- CORE_API_AUTH_PASSWORD=pass
ports:
- "6000:6000/udp"
volumes:
- "./config/restreamer:/core/config"
- "./data/restreamer:/core/data"
restart: unless-stopped
networks:
- net
labels:
- meta.role=restreamer
scheduler:
depends_on:
- "restreamer"
build: ./src/scheduler
image: stream-scheduler:latest
environment:
- LOG_LEVEL=info
- CORE_API_HOSTNAME=stream.example.com
- CORE_API_USERNAME=admin
- CORE_API_PASSWORD=pass
restart: unless-stopped
networks:
- net
labels:
- meta.role=scheduler
recorder:
depends_on:
- "restreamer"
image: bluenviron/mediamtx:latest-ffmpeg
environment:
- MTX_PROTOCOLS=tcp
ports:
- 8554:8554
volumes:
- "./config/mediamtx/mediamtx.yml:/mediamtx.yml"
- "./data/recordings:/recordings"
restart: unless-stopped
networks:
- net
labels:
- meta.role=recorder
archive:
depends_on:
- "recorder"
build: ./src/archive
image: stream-archive:latest
volumes:
- "./config/archive/nginx.conf:/etc/nginx/nginx.conf"
- "./data/recordings:/recordings:ro"
restart: unless-stopped
networks:
- net
labels:
- meta.role=archive