version: "3.8"

volumes:
  traefik:
    name: ${TRAEFIK_VOLUME_NAME:-traefik}

networks:
  traefik:
    name: ${TRAEFIK_NETWORK_NAME:-traefik}

services:
  traefik:
    container_name: ${TRAEFIK_CONTAINER_NAME:-traefik}
    image: ${TRAEFIK_IMAGE:-traefik:v2.10.4}
    restart: always
    volumes:
      - /var/run/docker.sock:/var/run/docker.sock
      - traefik:/traefik
      - /etc/timezone:/etc/timezone:ro
      - /etc/localtime:/etc/localtime:ro
    ports:
      - target: 80
        published: 80
        protocol: tcp
        mode: host
    networks:
      - traefik
    command:
      - --api.insecure=${TRAEFIK_API_INSECURE:-true}
      - --api.disabledashboardad=${TRAEFIK_API_DISABLEDASHBOARDAD:-true}
      - --log.level=${TRAEFIK_LOG_LEVEL:-INFO}
      - --global.sendanonymoususage=${TRAEFIK_GLOBAL_SENDANONYMOUSUSAGE:-false}
      - --global.checknewversion=${TRAEFIK_GLOBAL_CHECKNEWVERSION:-false}
      - --metrics.prometheus=${TRAEFIK_METRICS_PROMETHEUS:-true}
      - --accesslog=${TRAEFIK_ACCESSLOG:-false}

      - --providers.docker
      - --providers.docker.exposedbydefault=false
      - --providers.docker.network=${TRAEFIK_NETWORK_NAME:-traefik}

      - --entryPoints.traefik.address=:8080

      - --entrypoints.${TRAEFIK_ENTRYPOINTS:-web}.address=:80
      - --entryPoints.${TRAEFIK_ENTRYPOINTS:-web}.forwardedHeaders.insecure
    labels:
      - traefik.enable=true
      - traefik.http.routers.traefik.rule=Host(`${TRAEFIK_DOMAIN:?err}`)
      - traefik.http.routers.traefik.entrypoints=${TRAEFIK_ENTRYPOINTS:-web}
      - traefik.http.services.traefik.loadbalancer.server.port=8080