television/docker-compose.yml

129 lines
3.2 KiB
YAML

version: '3'
networks:
net:
external: false
services:
haproxy:
image: haproxy:lts
env_file:
- "variables.env"
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:
- "./data/restreamer/config:/core/config"
- "./data/restreamer/data:/core/data"
restart: unless-stopped
networks:
- net
labels:
- meta.role=restreamer
scheduler:
depends_on:
- "restreamer"
build: ./src/scheduler
image: tv-scheduler:latest
env_file:
- "variables.env"
volumes:
- "./config/scheduler:/config"
- "./data/recorder:/recordings"
restart: unless-stopped
networks:
- net
labels:
- meta.role=scheduler
discordbot:
depends_on:
- "scheduler"
build: ./src/discordbot
image: tv-discordbot:latest
env_file:
- "variables.env"
restart: unless-stopped
networks:
- net
labels:
- meta.role=discordbot
archive-api:
depends_on:
- "scheduler"
image: xemle/home-gallery-api-server
environment:
# TensorflowJS backends
# - cpu: slowest and best support
# - wasm: good perfromance for arm64 and amd64 platforms
# - node: best performance on amd64 platform
#- BACKEND=cpu
- BACKEND=wasm
#- BACKEND=node
restart: unless-stopped
networks:
- net
labels:
- meta.role=archive-api
archive:
depends_on:
- "scheduler"
image: xemle/home-gallery:1.14.6
environment:
- GALLERY_API_SERVER=http://archive-api:3000
- GALLERY_API_SERVER_CONCURRENT=5 # for SoC devices like Rasperry Pi. Use 5 otherwise
- GALLERY_API_SERVER_TIMEOUT=30 # for SoC devices like Rasperry Pi. Use 30 otherwise
#- GALLERY_USE_NATIVE=ffprobe,ffmpeg,vipsthumbnail # On issues with sharp resizer
- GALLERY_OPEN_BROWSER=false
# Use polling for safety of possible network mounts. Try 0 to use inotify via fs.watch
- GALLERY_WATCH_POLL_INTERVAL=300
volumes:
- "./config/archive/gallery.config.yml:/data/config/gallery.config.yml"
- "./data/archive:/data"
- "./data/recorder/vod:/data/vod:ro"
#user: "${CURRENT_USER}"
entrypoint: ['node', '/app/gallery.js']
command: ['run', 'server']
restart: unless-stopped
networks:
- net
labels:
- meta.role=archive