compose.yaml.j2 3.6 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192
  1. services:
  2. {{ service_name }}:
  3. image: ghcr.io/gethomepage/homepage:v1.10.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 or container_loglevel %}
  11. environment:
  12. {% if container_timezone %}
  13. - TZ={{ container_timezone }}
  14. {% endif %}
  15. {% if container_loglevel %}
  16. - LOG_LEVEL={{ container_loglevel }}
  17. {% endif %}
  18. {% endif %}
  19. {% if traefik_enabled %}
  20. networks:
  21. {{ traefik_network }}:
  22. {% endif %}
  23. {% if not traefik_enabled %}
  24. ports:
  25. - {{ ports_http }}:3000
  26. {% endif %}
  27. volumes:
  28. {% if volume_mode == 'local' %}
  29. - {{ service_name }}_config:/app/config
  30. - {{ service_name }}_images:/app/images
  31. - {{ service_name }}_icons:/app/icons
  32. {% elif volume_mode == 'mount' %}
  33. - {{ volume_mount_path }}/{{ service_name }}/config:/app/config
  34. - {{ volume_mount_path }}/{{ service_name }}/images:/app/images
  35. - {{ volume_mount_path }}/{{ service_name }}/icons:/app/icons
  36. {% endif %}
  37. {% if traefik_enabled and not swarm_enabled %}
  38. labels:
  39. - traefik.enable=true
  40. - traefik.docker.network={{ traefik_network }}
  41. - traefik.http.services.{{ service_name }}-web.loadbalancer.server.port=3000
  42. - traefik.http.routers.{{ service_name }}-http.service={{ service_name }}-web
  43. - traefik.http.routers.{{ service_name }}-http.rule=Host(`{{ traefik_host }}.{{ traefik_domain }}`)
  44. - traefik.http.routers.{{ service_name }}-http.entrypoints={{ traefik_entrypoint }}
  45. {% if traefik_tls_enabled %}
  46. - traefik.http.routers.{{ service_name }}-https.service={{ service_name }}-web
  47. - traefik.http.routers.{{ service_name }}-https.rule=Host(`{{ traefik_host }}.{{ traefik_domain }}`)
  48. - traefik.http.routers.{{ service_name }}-https.entrypoints={{ traefik_tls_entrypoint }}
  49. - traefik.http.routers.{{ service_name }}-https.tls=true
  50. - traefik.http.routers.{{ service_name }}-https.tls.certresolver={{ traefik_tls_certresolver }}
  51. {% endif %}
  52. {% endif %}
  53. {% if swarm_enabled %}
  54. deploy:
  55. {% if swarm_placement_mode == 'replicated' %}
  56. replicas: {{ swarm_replicas }}
  57. placement:
  58. constraints:
  59. - node.hostname == {{ swarm_placement_host }}
  60. {% else %}
  61. mode: global
  62. {% endif %}
  63. {% if traefik_enabled %}
  64. labels:
  65. - traefik.enable=true
  66. - traefik.docker.network={{ traefik_network }}
  67. - traefik.http.services.{{ service_name }}-web.loadbalancer.server.port=3000
  68. - traefik.http.routers.{{ service_name }}-http.service={{ service_name }}-web
  69. - traefik.http.routers.{{ service_name }}-http.rule=Host(`{{ traefik_host }}.{{ traefik_domain }}`)
  70. - traefik.http.routers.{{ service_name }}-http.entrypoints={{ traefik_entrypoint }}
  71. {% if traefik_tls_enabled %}
  72. - traefik.http.routers.{{ service_name }}-https.service={{ service_name }}-web
  73. - traefik.http.routers.{{ service_name }}-https.rule=Host(`{{ traefik_host }}.{{ traefik_domain }}`)
  74. - traefik.http.routers.{{ service_name }}-https.entrypoints={{ traefik_tls_entrypoint }}
  75. - traefik.http.routers.{{ service_name }}-https.tls=true
  76. - traefik.http.routers.{{ service_name }}-https.tls.certresolver={{ traefik_tls_certresolver }}
  77. {% endif %}
  78. {% endif %}
  79. {% endif %}
  80. {% if traefik_enabled %}
  81. networks:
  82. {{ traefik_network }}:
  83. external: true
  84. {% endif %}
  85. {% if volume_mode == 'local' %}
  86. volumes:
  87. {{ service_name }}_config:
  88. {{ service_name }}_images:
  89. {{ service_name }}_icons:
  90. {% endif %}