compose.yaml.j2 1.5 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162
  1. services:
  2. {{ service_name }}:
  3. image: docker.io/library/traefik:v3.2
  4. {% if not swarm_enabled %}
  5. container_name: {{ container_name }}
  6. {% endif %}
  7. {% if ports_enabled %}
  8. ports:
  9. - "80:80"
  10. - "443:443"
  11. {% if traefik_dashboard_enabled %}
  12. - "8080:8080" # Dashboard (don't use in production)
  13. {% endif %}
  14. {% endif %}
  15. volumes:
  16. - /var/run/docker.sock:/var/run/docker.sock:ro
  17. - ./config/:/etc/traefik/:ro
  18. - ./certs/:/var/traefik/certs/:rw
  19. {% if traefik_tls_enabled %}
  20. env_file:
  21. - ./.env.
  22. {% endif %}
  23. environment:
  24. - TZ={{ container_timezone }}
  25. {% if network_enabled %}
  26. networks:
  27. - {{ network_name }}
  28. {% endif %}
  29. {% if swarm_enabled %}
  30. {% if traefik_tls_enabled %}
  31. secrets:
  32. - {{ traefik_tls_acme_secret_name }}
  33. {% endif %}
  34. deploy:
  35. mode: {{ swarm_placement_mode }}
  36. {% if swarm_placement_mode == 'replicated' %}
  37. replicas: {{ swarm_replicas }}
  38. {% endif %}
  39. {% if swarm_placement_host %}
  40. placement:
  41. constraints:
  42. - {{ swarm_placement_host }}
  43. {% endif %}
  44. {% else %}
  45. restart: {{ restart_policy }}
  46. {% endif %}
  47. {% if swarm_enabled and traefik_tls_enabled %}
  48. secrets:
  49. {{ traefik_tls_acme_secret_name }}:
  50. external: true
  51. {% endif %}
  52. {% if network_enabled %}
  53. networks:
  54. {{ network_name }}:
  55. {% if network_external %}
  56. external: true
  57. {% else %}
  58. driver: bridge
  59. {% endif %}
  60. {% endif %}