compose.yaml.j2 4.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148
  1. services:
  2. {{ service_name }}:
  3. image: docker.io/jc21/nginx-proxy-manager:2.12.6
  4. {% if not swarm_enabled %}
  5. restart: {{ restart_policy }}
  6. container_name: {{ container_name }}
  7. {% endif %}
  8. hostname: {{ container_hostname }}
  9. environment:
  10. - TZ={{ container_timezone }}
  11. - DB_MYSQL_HOST={{ service_name }}-db
  12. - DB_MYSQL_PORT={{ database_port }}
  13. - DB_MYSQL_USER={{ database_user }}
  14. {% if swarm_enabled %}
  15. - DB_MYSQL_PASSWORD=/run/secrets/database_password
  16. {% else %}
  17. - DB_MYSQL_PASSWORD={{ database_password }}
  18. {% endif %}
  19. - DB_MYSQL_NAME={{ database_name }}
  20. ports:
  21. - {{ ports_http }}:80
  22. - 81:81
  23. - {{ ports_https }}:443
  24. volumes:
  25. {% if volume_mode == 'local' %}
  26. - {{ service_name }}_data:/data
  27. - {{ service_name }}_ssl:/etc/letsencrypt
  28. {% elif volume_mode == 'mount' %}
  29. - {{ volume_mount_path }}/{{ service_name }}/data:/data
  30. - {{ volume_mount_path }}/{{ service_name }}/ssl:/etc/letsencrypt
  31. {% elif volume_mode == 'nfs' %}
  32. - type: volume
  33. source: {{ service_name }}_data
  34. target: /data
  35. volume:
  36. nocopy: true
  37. - type: volume
  38. source: {{ service_name }}_ssl
  39. target: /etc/letsencrypt
  40. volume:
  41. nocopy: true
  42. {% endif %}
  43. {% endif %}
  44. depends_on:
  45. - {{ service_name }}-db
  46. {% if swarm_enabled %}
  47. secrets:
  48. - database_password
  49. deploy:
  50. {% if swarm_placement_mode == 'replicated' %}
  51. replicas: {{ swarm_replicas }}
  52. placement:
  53. constraints:
  54. - node.hostname == {{ swarm_placement_host }}
  55. {% else %}
  56. mode: global
  57. {% endif %}
  58. {% if resources_enabled %}
  59. resources:
  60. limits:
  61. cpus: '{{ resources_cpu_limit }}'
  62. memory: {{ resources_memory_limit }}
  63. reservations:
  64. cpus: '{{ resources_cpu_reservation }}'
  65. memory: {{ resources_memory_reservation }}
  66. {% endif %}
  67. {% endif %}
  68. {{ service_name }}-db:
  69. image: docker.io/jc21/mariadb-aria:10.11.5
  70. {% if not swarm_enabled %}
  71. restart: {{ restart_policy }}
  72. container_name: {{ container_name }}-db
  73. {% endif %}
  74. hostname: {{ container_hostname }}-db
  75. environment:
  76. - TZ={{ container_timezone }}
  77. {% if swarm_enabled %}
  78. - MYSQL_ROOT_PASSWORD=/run/secrets/database_root_password
  79. - MYSQL_PASSWORD=/run/secrets/database_password
  80. {% else %}
  81. - MYSQL_ROOT_PASSWORD={{ database_root_password }}
  82. - MYSQL_PASSWORD={{ database_password }}
  83. {% endif %}
  84. - MYSQL_DATABASE={{ database_name }}
  85. - MYSQL_USER={{ database_user }}
  86. volumes:
  87. {% if volume_mode == 'local' %}
  88. - {{ service_name }}_db:/var/lib/mysql
  89. {% elif volume_mode == 'mount' %}
  90. - {{ volume_mount_path }}/{{ service_name }}/db:/var/lib/mysql
  91. {% elif volume_mode == 'nfs' %}
  92. - type: volume
  93. source: {{ service_name }}_db
  94. target: /var/lib/mysql
  95. volume:
  96. nocopy: true
  97. {% endif %}
  98. {% endif %}
  99. {% if swarm_enabled %}
  100. secrets:
  101. - database_root_password
  102. - database_password
  103. deploy:
  104. replicas: 1
  105. {% if resources_enabled %}
  106. resources:
  107. limits:
  108. cpus: '{{ resources_cpu_limit }}'
  109. memory: {{ resources_memory_limit }}
  110. reservations:
  111. cpus: '{{ resources_cpu_reservation }}'
  112. memory: {{ resources_memory_reservation }}
  113. {% endif %}
  114. {% endif %}
  115. {% endif %}
  116. {% endif %}
  117. volumes:
  118. {{ service_name }}_data:
  119. {% if volume_mode == 'nfs' %}
  120. driver: local
  121. driver_opts:
  122. type: nfs
  123. o: {{ volume_nfs_options }}
  124. device: ":{{ volume_nfs_path }}/{{ service_name }}/data"
  125. {% endif %}
  126. {{ service_name }}_ssl:
  127. {% if volume_mode == 'nfs' %}
  128. driver: local
  129. driver_opts:
  130. type: nfs
  131. o: {{ volume_nfs_options }}
  132. device: ":{{ volume_nfs_path }}/{{ service_name }}/ssl"
  133. {% endif %}
  134. {{ service_name }}_db:
  135. {% if volume_mode == 'nfs' %}
  136. driver: local
  137. driver_opts:
  138. type: nfs
  139. o: {{ volume_nfs_options }}
  140. device: ":{{ volume_nfs_path }}/{{ service_name }}/db"
  141. {% endif %}
  142. {% if swarm_enabled %}
  143. secrets:
  144. database_root_password:
  145. external: true
  146. database_password:
  147. external: true
  148. {% endif %}