services: traefik: image: traefik:latest container_name: traefik restart: always {% if traefik_cert_mode == 'acme' %} environment: RFC2136_NAMESERVER: "{{ traefik_acme_dns_nameserver }}" RFC2136_TSIG_ALGORITHM: "{{ traefik_acme_tsig_algorithm }}" RFC2136_TSIG_KEY: "{{ traefik_acme_tsig_key }}" RFC2136_TSIG_SECRET: "{{ traefik_acme_tsig_secret }}" RFC2136_PROPAGATION_TIMEOUT: "{{ traefik_acme_propagation_timeout }}" RFC2136_POLLING_INTERVAL: "{{ traefik_acme_polling_interval }}" RFC2136_TTL: "{{ traefik_acme_ttl }}" {% if traefik_acme_tcp_only | default(false) %} LEGO_EXPERIMENTAL_DNS_TCP_ONLY: "true" {% endif %} {% endif %} ports: - "80:80" - "443:443" {% if traefik_enable_dashboard and not traefik_dashboard_domain %} - "8080:8080" {% endif %} volumes: - {{ docker_volume_dir }}/traefik.yml:/traefik.yml:ro - {{ docker_volume_dir }}/config:/config:ro {% if traefik_cert_mode == 'acme' %} - {{ docker_volume_dir }}/letsencrypt:/letsencrypt {% endif %} {% if traefik_mode == 'backend' %} - /var/run/docker.sock:/var/run/docker.sock:ro {% endif %} networks: - {{ traefik_network }} {% if traefik_extra_hosts | default([]) | length > 0 %} extra_hosts: {% for h in traefik_extra_hosts %} - "{{ h }}" {% endfor %} {% endif %} networks: {{ traefik_network }}: name: {{ traefik_network }} external: true