compose.yaml.j2 3.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899
  1. ---
  2. services:
  3. {{ service_name }}:
  4. image: docker.io/louislam/uptime-kuma:2.1.3
  5. environment:
  6. - TZ={{ container_timezone }}
  7. {% if database_type == 'sqlite' %}
  8. - UPTIME_KUMA_DB_TYPE=sqlite
  9. {% elif database_type == 'mariadb' %}
  10. - UPTIME_KUMA_DB_TYPE=mariadb
  11. {% if database_external %}
  12. - UPTIME_KUMA_DB_HOSTNAME={{ database_host }}
  13. {% else %}
  14. - UPTIME_KUMA_DB_HOSTNAME={{ service_name }}_db
  15. {% endif %}
  16. - UPTIME_KUMA_DB_PORT={{ database_port }}
  17. - UPTIME_KUMA_DB_USERNAME={{ database_user }}
  18. - UPTIME_KUMA_DB_PASSWORD=${DATABASE_PASSWORD}
  19. - UPTIME_KUMA_DB_NAME={{ database_name }}
  20. {% endif %}
  21. {% if (not database_external and database_type == 'mariadb') or traefik_enabled %}
  22. networks:
  23. {% if not database_external and database_type == 'mariadb' %}
  24. - {{ service_name }}_backend
  25. {% endif %}
  26. {% if traefik_enabled %}
  27. - {{ traefik_network }}
  28. {% endif %}
  29. {% endif %}
  30. {% if traefik_enabled %}
  31. labels:
  32. - traefik.enable=true
  33. - traefik.docker.network={{ traefik_network }}
  34. - traefik.http.services.{{ service_name }}_web.loadBalancer.server.port=9000
  35. - traefik.http.routers.{{ service_name }}_http.service={{ service_name }}_web
  36. - traefik.http.routers.{{ service_name }}_http.rule=Host(`{{ traefik_host }}.{{ traefik_domain }}`)
  37. - traefik.http.routers.{{ service_name }}_http.entrypoints=web
  38. {% if traefik_tls_enabled %}
  39. - traefik.http.routers.{{ service_name }}_https.service={{ service_name }}_web
  40. - traefik.http.routers.{{ service_name }}_https.rule=Host(`{{ traefik_host }}.{{ traefik_domain }}`)
  41. - traefik.http.routers.{{ service_name }}_https.entrypoints=websecure
  42. - traefik.http.routers.{{ service_name }}_https.tls=true
  43. - traefik.http.routers.{{ service_name }}_https.tls.certresolver={{ traefik_tls_certresolver }}
  44. {% endif %}
  45. {% else %}
  46. ports:
  47. - {{ ports_http }}:3001
  48. {% endif %}
  49. volumes:
  50. - {{ service_name }}-data:/app/data
  51. healthcheck:
  52. test: ["CMD", "curl", "-f", "http://localhost:3001"]
  53. interval: 30s
  54. retries: 3
  55. start_period: 10s
  56. timeout: 5s
  57. restart: {{ restart_policy }}
  58. {% if not database_external and database_type == "mariadb" %}
  59. {{ service_name }}_db:
  60. image: docker.io/library/mariadb:10.5
  61. restart: {{ restart_policy }}
  62. environment:
  63. - TZ={{ container_timezone }}
  64. - MYSQL_USER={{ database_user }}
  65. - MYSQL_PASSWORD=${DATABASE_PASSWORD}
  66. - MYSQL_DATABASE={{ database_name }}
  67. - MYSQL_ROOT_PASSWORD=${DATABASE_PASSWORD}
  68. networks:
  69. - {{ service_name }}_backend
  70. healthcheck:
  71. test: ["CMD-SHELL", "mysqladmin ping -h localhost -u {{ database_user }} -p${DATABASE_PASSWORD}"]
  72. start_period: 30s
  73. interval: 10s
  74. timeout: 10s
  75. retries: 5
  76. volumes:
  77. - {{ service_name }}_db:/var/lib/mysql
  78. {% endif %}
  79. volumes:
  80. {{ service_name }}-data:
  81. driver: local
  82. {% if not database_external and database_type == "mariadb" %}
  83. {{ service_name }}_db:
  84. driver: local
  85. {% endif %}
  86. {% if (not database_external and database_type == "mariadb") or traefik_enabled %}
  87. networks:
  88. {% if not database_external and database_type == "mariadb" %}
  89. {{ service_name }}_backend:
  90. driver: bridge
  91. {% endif %}
  92. {% if traefik_enabled %}
  93. {{ traefik_network }}:
  94. external: true
  95. {% endif %}
  96. {% endif %}