| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899 |
- services:
- {{ service_name }}:
- image: docker.io/ubuntu/bind9:9.20-24.10_edge
- restart: {{ restart_policy }}
- {% if container_hostname %}
- hostname: {{ container_hostname }}
- {% endif %}
- environment:
- - TZ={{ container_timezone }}
- - BIND9_USER=bind
- {% if network_mode == 'host' %}
- network_mode: host
- {% elif network_mode == 'bridge' or network_mode == 'macvlan' %}
- networks:
- {% if network_mode == 'macvlan' %}
- {{ network_name }}:
- ipv4_address: {{ network_macvlan_ipv4_address }}
- {% elif network_mode == 'bridge' %}
- {{ network_name }}:
- {% endif %}
- {% endif %}
- {% if network_mode == '' or network_mode == 'bridge' %}
- ports:
- - "53:53/tcp"
- - "53:53/udp"
- {% endif %}
- volumes:
- {% if volume_mode == 'mount' %}
- - {{ volume_mount_path }}/config:/etc/bind:rw
- - {{ volume_mount_path }}/zones:/var/lib/bind:rw
- - {{ volume_mount_path }}/cache:/var/cache/bind:rw
- {% else %}
- - {{ service_name }}_config:/etc/bind
- - {{ service_name }}_zones:/var/lib/bind
- - {{ service_name }}_cache:/var/cache/bind
- {% endif %}
- {#
- Network definitions (only when needed):
- - When network_mode is empty: no definition needed (uses Docker's default bridge)
- - When network_mode is 'bridge': define custom bridge network
- - When network_mode is 'macvlan': configure macvlan with static IP (for Compose mode)
- #}
- {% if network_mode == 'bridge' or network_mode == 'macvlan' %}
- networks:
- {{ network_name }}:
- {% if network_external %}
- external: true
- {% else %}
- {% if network_mode == 'macvlan' %}
- driver: macvlan
- driver_opts:
- parent: {{ network_macvlan_parent_interface }}
- ipam:
- config:
- - subnet: {{ network_macvlan_subnet }}
- gateway: {{ network_macvlan_gateway }}
- name: {{ network_name }}
- {% elif network_mode == 'bridge' %}
- driver: bridge
- {% endif %}
- {% endif %}
- {% endif %}
- {#
- Volume definitions:
- - When volume_mode is 'local' (default): use docker-managed local volumes
- - When volume_mode is 'nfs': configure NFS-backed volumes
- - When volume_mode is 'mount': no volume definition needed (bind mounts used directly)
- #}
- {% if volume_mode == 'local' %}
- volumes:
- {{ service_name }}_config:
- driver: local
- {{ service_name }}_zones:
- driver: local
- {{ service_name }}_cache:
- driver: local
- {% elif volume_mode == 'nfs' %}
- volumes:
- {{ service_name }}_config:
- driver: local
- driver_opts:
- type: nfs
- o: addr={{ volume_nfs_server }},{{ volume_nfs_options }}
- device: ":{{ volume_nfs_path }}/config"
- {{ service_name }}_zones:
- driver: local
- driver_opts:
- type: nfs
- o: addr={{ volume_nfs_server }},{{ volume_nfs_options }}
- device: ":{{ volume_nfs_path }}/zones"
- {{ service_name }}_cache:
- driver: local
- driver_opts:
- type: nfs
- o: addr={{ volume_nfs_server }},{{ volume_nfs_options }}
- device: ":{{ volume_nfs_path }}/cache"
- {% endif %}
|