compose.yaml.j2 3.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112
  1. ---
  2. services:
  3. {{ service_name }}:
  4. image: docker.io/adguard/adguardhome:v0.107.71
  5. restart: {{ restart_policy }}
  6. {% if network_mode == 'host' %}
  7. network_mode: host
  8. {% elif network_mode == 'bridge' or network_mode == 'macvlan' or traefik_enabled %}
  9. networks:
  10. {% if traefik_enabled %}
  11. {{ traefik_network }}:
  12. {% endif %}
  13. {% if network_mode == 'macvlan' %}
  14. {{ network_name }}:
  15. ipv4_address: {{ network_macvlan_ipv4_address }}
  16. {% elif network_mode == 'bridge' %}
  17. {{ network_name }}:
  18. {% endif %}
  19. {% endif %}
  20. {% if not network_mode or network_mode == 'bridge' or traefik_enabled %}
  21. ports:
  22. {% if not traefik_enabled %}
  23. - "{{ ports_http }}:80/tcp"
  24. - "{{ ports_https }}:443/tcp"
  25. {% endif %}
  26. {% if initial_setup %}
  27. - "{{ ports_initial }}:3000/tcp"
  28. {% endif %}
  29. - "{{ ports_https }}:443/udp"
  30. - "{{ ports_dns }}:53/tcp"
  31. - "{{ ports_dns }}:53/udp"
  32. - "{{ ports_tls }}:853/tcp"
  33. - "{{ ports_dnscrypt }}:5443/tcp"
  34. - "{{ ports_dnscrypt }}:5443/udp"
  35. {% endif %}
  36. volumes:
  37. {% if volume_mode == 'mount' %}
  38. - {{ volume_mount_path }}/work:/opt/adguardhome/work:rw
  39. - {{ volume_mount_path }}/conf:/opt/adguardhome/conf:rw
  40. {% else %}
  41. - {{ service_name }}_work:/opt/adguardhome/work
  42. - {{ service_name }}_conf:/opt/adguardhome/conf
  43. {% endif %}
  44. cap_add:
  45. - NET_ADMIN
  46. - NET_BIND_SERVICE
  47. - NET_RAW
  48. {% if traefik_enabled %}
  49. labels:
  50. - traefik.enable=true
  51. - traefik.docker.network={{ traefik_network }}
  52. - traefik.http.services.{{ service_name }}_web.loadBalancer.server.port=80
  53. - traefik.http.routers.{{ service_name }}_web_http.service={{ service_name }}_web
  54. - traefik.http.routers.{{ service_name }}_web_http.rule=Host(`{{ traefik_host }}.{{ traefik_domain }}`)
  55. - traefik.http.routers.{{ service_name }}_web_http.entrypoints=web
  56. {% if traefik_tls_enabled %}
  57. - traefik.http.routers.{{ service_name }}_web_https.service={{ service_name }}_web
  58. - traefik.http.routers.{{ service_name }}_web_https.rule=Host(`{{ traefik_host }}.{{ traefik_domain }}`)
  59. - traefik.http.routers.{{ service_name }}_web_https.entrypoints=websecure
  60. - traefik.http.routers.{{ service_name }}_web_https.tls=true
  61. - traefik.http.routers.{{ service_name }}_web_https.tls.certresolver={{ traefik_tls_certresolver }}
  62. {% endif %}
  63. {% endif %}
  64. {% if network_mode == 'bridge' or network_mode == 'macvlan' or traefik_enabled %}
  65. networks:
  66. {% if network_mode == 'bridge' or network_mode == 'macvlan'%}
  67. {{ network_name }}:
  68. {% if network_external %}
  69. external: true
  70. {% else %}
  71. {% if network_mode == 'macvlan' %}
  72. driver: macvlan
  73. driver_opts:
  74. parent: {{ network_macvlan_parent_interface }}
  75. ipam:
  76. config:
  77. - subnet: {{ network_macvlan_subnet }}
  78. gateway: {{ network_macvlan_gateway }}
  79. name: {{ network_name }}
  80. {% else %}
  81. driver: bridge
  82. {% endif %}
  83. {% endif %}
  84. {% endif %}
  85. {% if traefik_enabled %}
  86. {{ traefik_network }}:
  87. external: true
  88. {% endif %}
  89. {% endif %}
  90. {% if volume_mode == 'local' %}
  91. volumes:
  92. {{ service_name }}_work:
  93. driver: local
  94. {{ service_name }}_conf:
  95. driver: local
  96. {% elif volume_mode == 'nfs' %}
  97. volumes:
  98. {{ service_name }}_work:
  99. driver: local
  100. driver_opts:
  101. type: nfs
  102. o: addr={{ volume_nfs_server }},nfsvers=4,{{ volume_nfs_options }}
  103. device: ":{{ volume_nfs_path }}/work"
  104. {{ service_name }}_conf:
  105. driver: local
  106. driver_opts:
  107. type: nfs
  108. o: addr={{ volume_nfs_server }},nfsvers=4,{{ volume_nfs_options }}
  109. device: ":{{ volume_nfs_path }}/conf"
  110. {% endif %}