compose.yaml.j2 3.8 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495
  1. services:
  2. {{ service_name }}:
  3. image: docker.io/library/nginx:1.28.0-alpine
  4. {% if not swarm_enabled %}
  5. restart: {{ restart_policy }}
  6. container_name: {{ container_name }}
  7. {% endif %}
  8. {% if network_mode == 'host' %}
  9. network_mode: host
  10. {% else %}
  11. networks:
  12. {% if traefik_enabled %}
  13. {{ traefik_network }}:
  14. {% endif %}
  15. {% if network_mode == 'macvlan' %}
  16. {{ network_name }}:
  17. ipv4_address: {{ network_macvlan_ipv4_address }}
  18. {% elif network_mode == 'bridge' %}
  19. {{ network_name }}:
  20. {% endif %}
  21. {% endif %}
  22. {% if not traefik_enabled and network_mode == 'bridge' %}
  23. ports:
  24. {% if swarm_enabled %}
  25. - target: 80
  26. published: {{ ports_http }}
  27. protocol: tcp
  28. mode: host
  29. - target: 443
  30. published: {{ ports_https }}
  31. protocol: tcp
  32. mode: host
  33. {% else %}
  34. - "{{ ports_http }}:80"
  35. - "{{ ports_https }}:443"
  36. {% endif %}
  37. {% endif %}
  38. # volumes:
  39. # - ./config/default.conf:/etc/nginx/conf.d/default.conf:ro
  40. # - ./data:/usr/share/nginx/html:ro
  41. {% if traefik_enabled and not swarm_enabled %}
  42. labels:
  43. - traefik.enable=true
  44. - traefik.docker.network={{ traefik_network }}
  45. - traefik.http.services.{{ service_name }}-web.loadbalancer.server.port=80
  46. - traefik.http.routers.{{ service_name }}-web-http.rule=Host(`{{ traefik_host }}.{{ traefik_domain }}`)
  47. - traefik.http.routers.{{ service_name }}-web-http.entrypoints={{ traefik_entrypoint }}
  48. - traefik.http.routers.{{ service_name }}-web-http.service={{ service_name }}-web
  49. {% if traefik_tls_enabled %}
  50. - traefik.http.routers.{{ service_name }}-web-https.rule=Host(`{{ traefik_host }}.{{ traefik_domain }}`)
  51. - traefik.http.routers.{{ service_name }}-web-https.entrypoints={{ traefik_tls_entrypoint }}
  52. - traefik.http.routers.{{ service_name }}-web-https.tls=true
  53. - traefik.http.routers.{{ service_name }}-web-https.tls.certresolver={{ traefik_tls_certresolver }}
  54. - traefik.http.routers.{{ service_name }}-web-https.service={{ service_name }}-web
  55. {% endif %}
  56. {% endif %}
  57. {% if swarm_enabled %}
  58. deploy:
  59. replicas: {{ swarm_replicas }}
  60. {% if traefik_enabled %}
  61. labels:
  62. - traefik.enable=true
  63. - traefik.docker.network={{ traefik_network }}
  64. - traefik.http.services.{{ service_name }}-web.loadbalancer.server.port=80
  65. - traefik.http.routers.{{ service_name }}-web-http.rule=Host(`{{ traefik_host }}.{{ traefik_domain }}`)
  66. - traefik.http.routers.{{ service_name }}-web-http.entrypoints={{ traefik_entrypoint }}
  67. - traefik.http.routers.{{ service_name }}-web-http.service={{ service_name }}-web
  68. {% if traefik_tls_enabled %}
  69. - traefik.http.routers.{{ service_name }}-web-https.rule=Host(`{{ traefik_host }}.{{ traefik_domain }}`)
  70. - traefik.http.routers.{{ service_name }}-web-https.entrypoints={{ traefik_tls_entrypoint }}
  71. - traefik.http.routers.{{ service_name }}-web-https.tls=true
  72. - traefik.http.routers.{{ service_name }}-web-https.tls.certresolver={{ traefik_tls_certresolver }}
  73. - traefik.http.routers.{{ service_name }}-web-https.service={{ service_name }}-web
  74. {% endif %}
  75. {% endif %}
  76. {% endif %}
  77. networks:
  78. {% if traefik_enabled %}
  79. {{ traefik_network }}:
  80. external: true
  81. {% endif %}
  82. {% if network_mode == 'macvlan' %}
  83. {{ network_name }}:
  84. driver: macvlan
  85. driver_opts:
  86. parent: {{ network_macvlan_parent_interface }}
  87. ipam:
  88. config:
  89. - subnet: {{ network_macvlan_subnet }}
  90. gateway: {{ network_macvlan_gateway }}
  91. {% elif network_mode == 'bridge' %}
  92. {{ network_name }}:
  93. driver: {% if swarm_enabled %}overlay{% else %}bridge{% endif %}
  94. {% endif %}