service-deploy-v1.j2 2.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354
  1. {# @requires services.*.deploy #}
  2. {% if swarm_enabled or resources_enabled %}
  3. deploy:
  4. {% if swarm_enabled %}
  5. mode: {{ swarm_placement_mode }}
  6. {% if swarm_placement_mode == 'replicated' %}
  7. replicas: {{ swarm_replicas }}
  8. {% endif %}
  9. {% if swarm_placement_host %}
  10. placement:
  11. constraints:
  12. - node.hostname == {{ swarm_placement_host }}
  13. {% endif %}
  14. restart_policy:
  15. condition: on-failure
  16. {% endif %}
  17. {% if resources_enabled %}
  18. resources:
  19. limits:
  20. cpus: '{{ resources_cpu_limit }}'
  21. memory: {{ resources_memory_limit }}
  22. {% if swarm_enabled %}
  23. reservations:
  24. cpus: '{{ resources_cpu_reservation }}'
  25. memory: {{ resources_memory_reservation }}
  26. {% endif %}
  27. {% endif %}
  28. {% if swarm_enabled and traefik_enabled %}
  29. labels:
  30. - traefik.enable=true
  31. - traefik.docker.network={{ traefik_network }}
  32. - traefik.http.services.{{ service_name }}-web.loadBalancer.server.port=__ANYINT__
  33. - traefik.http.routers.{{ service_name }}-http.service={{ service_name }}-web
  34. - traefik.http.routers.{{ service_name }}-http.rule=Host(`{{ traefik_host }}`)
  35. - traefik.http.routers.{{ service_name }}-http.entrypoints={{ traefik_entrypoint }}
  36. {# @optional-start #}
  37. {% if authentik_enabled %}
  38. - traefik.http.routers.{{ service_name }}-http.middlewares={{ authentik_traefik_middleware }}
  39. {% endif %}
  40. {# @optional-end #}
  41. {% if traefik_tls_enabled %}
  42. - traefik.http.routers.{{ service_name }}-https.service={{ service_name }}-web
  43. - traefik.http.routers.{{ service_name }}-https.rule=Host(`{{ traefik_host }}`)
  44. - traefik.http.routers.{{ service_name }}-https.entrypoints={{ traefik_tls_entrypoint }}
  45. - traefik.http.routers.{{ service_name }}-https.tls=true
  46. - traefik.http.routers.{{ service_name }}-https.tls.certresolver={{ traefik_tls_certresolver }}
  47. {# @optional-start #}
  48. {% if authentik_enabled %}
  49. - traefik.http.routers.{{ service_name }}-https.middlewares={{ authentik_traefik_middleware }}
  50. {% endif %}
  51. {# @optional-end #}
  52. {% endif %}
  53. {% endif %}
  54. {% endif %}