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 env_file: - "variables.env" 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 env_file: - "variables.env" 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/recorder/mediamtx.yml:/mediamtx.yml" - "./data/archive:/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/archive:/recordings:ro" restart: unless-stopped networks: - net labels: - meta.role=archive