compose.yaml.j2 3.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990
  1. services:
  2. {{ service_name }}:
  3. image: docker.io/b4bz/homer:v25.11.1
  4. {% if not swarm_enabled %}
  5. restart: {{ restart_policy }}
  6. {% if container_name %}
  7. container_name: {{ container_name }}
  8. {% endif %}
  9. {% endif %}
  10. {% if container_timezone %}
  11. environment:
  12. - TZ={{ container_timezone }}
  13. {% endif %}
  14. {% if traefik_enabled %}
  15. networks:
  16. {{ traefik_network }}:
  17. {% endif %}
  18. {% if not traefik_enabled %}
  19. ports:
  20. {% if swarm_enabled %}
  21. - target: 8080
  22. published: {{ ports_http }}
  23. protocol: tcp
  24. mode: host
  25. {% else %}
  26. - "{{ ports_http }}:8080"
  27. {% endif %}
  28. {% endif %}
  29. volumes:
  30. - ./assets:/www/assets
  31. {% if traefik_enabled and not swarm_enabled %}
  32. labels:
  33. - traefik.enable=true
  34. - traefik.docker.network={{ traefik_network }}
  35. - traefik.http.services.{{ service_name }}-web.loadBalancer.server.port=8080
  36. - traefik.http.routers.{{ service_name }}-http.service={{ service_name }}-web
  37. - traefik.http.routers.{{ service_name }}-http.rule=Host(`{{ traefik_host }}.{{ traefik_domain }}`)
  38. - traefik.http.routers.{{ service_name }}-http.entrypoints={{ traefik_entrypoint }}
  39. {% if traefik_tls_enabled %}
  40. - traefik.http.routers.{{ service_name }}-https.service={{ service_name }}-web
  41. - traefik.http.routers.{{ service_name }}-https.rule=Host(`{{ traefik_host }}.{{ traefik_domain }}`)
  42. - traefik.http.routers.{{ service_name }}-https.entrypoints={{ traefik_tls_entrypoint }}
  43. - traefik.http.routers.{{ service_name }}-https.tls=true
  44. - traefik.http.routers.{{ service_name }}-https.tls.certresolver={{ traefik_tls_certresolver }}
  45. {% endif %}
  46. {% endif %}
  47. {% if swarm_enabled %}
  48. deploy:
  49. {% if swarm_enabled %}
  50. mode: {{ swarm_placement_mode }}
  51. {% if swarm_placement_mode == 'replicated' %}
  52. replicas: {{ swarm_replicas }}
  53. {% endif %}
  54. {% if swarm_placement_host %}
  55. placement:
  56. constraints:
  57. - node.hostname == {{ swarm_placement_host }}
  58. {% endif %}
  59. restart_policy:
  60. condition: on-failure
  61. {% endif %}
  62. {% if swarm_enabled and traefik_enabled %}
  63. labels:
  64. - traefik.enable=true
  65. - traefik.docker.network={{ traefik_network }}
  66. - traefik.http.services.{{ service_name }}-web.loadBalancer.server.port=8080
  67. - traefik.http.routers.{{ service_name }}-http.service={{ service_name }}-web
  68. - traefik.http.routers.{{ service_name }}-http.rule=Host(`{{ traefik_host }}.{{ traefik_domain }}`)
  69. - traefik.http.routers.{{ service_name }}-http.entrypoints={{ traefik_entrypoint }}
  70. {% if authentik_enabled %}
  71. - traefik.http.routers.{{ service_name }}-http.middlewares={{ authentik_traefik_middleware }}
  72. {% endif %}
  73. {% if traefik_tls_enabled %}
  74. - traefik.http.routers.{{ service_name }}-https.service={{ service_name }}-web
  75. - traefik.http.routers.{{ service_name }}-https.rule=Host(`{{ traefik_host }}.{{ traefik_domain }}`)
  76. - traefik.http.routers.{{ service_name }}-https.entrypoints={{ traefik_tls_entrypoint }}
  77. - traefik.http.routers.{{ service_name }}-https.tls=true
  78. - traefik.http.routers.{{ service_name }}-https.tls.certresolver={{ traefik_tls_certresolver }}
  79. {% if authentik_enabled %}
  80. - traefik.http.routers.{{ service_name }}-https.middlewares={{ authentik_traefik_middleware }}
  81. {% endif %}
  82. {% endif %}
  83. {% endif %}
  84. {% endif %}
  85. {% if traefik_enabled %}
  86. networks:
  87. {{ traefik_network }}:
  88. external: true
  89. {% endif %}