version: "3.3"
services:
  traefik:
    image: "traefik:${TRAEFIK_VERSION}"
    container_name: "traefik"
    command:
      - "--api.dashboard=${TRAEFIK_API_DASHBOARD}"
      - "--api.insecure=${TRAEFIK_API_INSECURE}"
      - "--providers.docker=${TRAEFIK_PROVIDERS_DOCKER}"
      - "--providers.docker.exposedbydefault=${TRAEFIK_PROVIDERS_DOCKER_EXPOSEDBYDEFAULT}"
      - "--entrypoints.web.address=${TRAEFIK_ENTRYPOINTS_WEB_ADDRESS}"
      - "--entrypoints.websecure.address=${TRAEFIK_ENTRYPOINTS_WEBSECURE_ADDRESS}"
      - "--certificatesresolvers.myresolver.acme.tlschallenge=${TRAEFIK_CERTIFICATESRESOLVERS_MYRESOLVER_ACME_TLSCHALLENGE}"
      - "--certificatesresolvers.myresolver.acme.email=${TRAEFIK_CERTIFICATESRESOLVERS_MYRESOLVER_ACME_EMAIL}"
      - "--certificatesresolvers.myresolver.acme.storage=${TRAEFIK_CERTIFICATESRESOLVERS_MYRESOLVER_ACME_STORAGE}"
    ports:
      - "9091:80"
      - "443:443"
    volumes:
      - "${TRAEFIK_VOLUMES_LETSENCRYPT}"
      - "${TRAEFIK_VOLUMES_DOCKER_SOCK}"
    labels:
      - "traefik.enable=${TRAEFIK_LABELS_ENABLE}"
      - "traefik.http.routers.traefik.rule=${TRAEFIK_LABELS_ROUTER_RULE}"
      - "traefik.http.routers.traefik.entrypoints=${TRAEFIK_LABELS_ROUTER_ENTRYPOINTS}"
      - "traefik.http.routers.traefik.service=${TRAEFIK_LABELS_ROUTER_SERVICE}"
      - "traefik.http.routers.traefik.tls.certresolver=${TRAEFIK_LABELS_ROUTER_TLS_CERTRESOLVER}"      
      - "traefik.http.routers.traefik.middlewares=${TRAEFIK_LABELS_ROUTER_MIDDLEWARES}"
      - "traefik.http.middlewares.traefik-auth.basicauth.users=${TRAEFIK_MIDDLEWARES_TRAEFIK_AUTH_USERS}"
      - "homepage.group=${TRAEFIK_HOMEPAGE_GROUP}"
      - "homepage.name=${TRAEFIK_HOMEPAGE_NAME}"
      - "homepage.href=${TRAEFIK_HOMEPAGE_HREF}"
    networks:
      - traefik_network

networks:
  traefik_network:
    external: true