version: "3.3"
services:
  lb:
    image: haproxy:latest
    ports:
      - "80:80"
      - "443:443"
      - "1935:1935"
    volumes:
      - "./data/certificates:/certificates"
      - "./config/lb:/usr/local/etc/haproxy"
    depends_on:
      - "certbot"
      - "rtmp"
    restart: always
    networks:
      - internal
    labels:
      - meta.role=lb

  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: on-failure
    networks:
      - internal
    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;'"

  auth: # PSK Authentication Service
    build: ./auth
    hostname: auth
    user: nobody
    command: python /code/auth.py
    volumes:
      - "./auth:/code"
    # set the PSK Password for the Auth Daemon here
    environment:
      - password=ex4mple_p4ss
    restart: always
    networks:
      - internal
    labels:
      - meta.role=auth

  rtmp:
    build: ./rtmp
    hostname: rtmp
    #ports:
    #  - "18080:18080"
    volumes:
      - "./data/rtmp/hls:/tmp/hls"
    depends_on:
      - "auth"
      - "frontend"
    restart: always
    networks:
      - internal
    labels:
      - meta.role=rtmp

  frontend: # container for python frontend
    build: frontend/.
    command: uwsgi uwsgi.ini
    volumes:
      - "./config/frontend/config.yml:/code/config.yml:ro"
      - "./config/frontend/uwsgi.ini:/code/uwsgi.ini:ro"
    restart: always
    networks:
      - internal
    labels:
      - meta.role=frontend

networks:
  internal: {}

