214 lines
5.3 KiB
Django/Jinja

services:
{% include 'templates/docker/services/redis.yml.j2' %}
{% include 'templates/docker/services/' + database_type + '.yml.j2' %}
# Core services
resolver:
image: ghcr.io/mailu/unbound:{{applications.mailu.version}}
env_file: .env
restart: {{docker_restart_policy}}
{% include 'templates/docker/container/networks.yml.j2' %}
ipv4_address: {{networks.local.mailu.dns}}
logging:
driver: journald
front:
image: ghcr.io/mailu/nginx:{{applications.mailu.version}}
restart: {{docker_restart_policy}}
env_file: .env
logging:
driver: journald
ports:
- "127.0.0.1:{{ http_port }}:80"
- "{{networks.internet.ip4}}:25:25"
- "{{networks.internet.ip4}}:465:465"
- "{{networks.internet.ip4}}:587:587"
- "{{networks.internet.ip4}}:110:110"
- "{{networks.internet.ip4}}:995:995"
- "{{networks.internet.ip4}}:143:143"
- "{{networks.internet.ip4}}:993:993"
- "{{networks.internet.ip4}}:4190:4190"
volumes:
- "/etc/mailu/overrides/nginx:/overrides:ro"
- "{{cert_mount_directory}}:/certs:ro"
{% include 'templates/docker/container/depends-on-also-database.yml.j2' %}
resolver:
condition: service_started
{% include 'templates/docker/container/networks.yml.j2' %}
webmail:
radicale:
dns:
- {{networks.local.mailu.dns}}
admin:
image: ghcr.io/mailu/admin:{{applications.mailu.version}}
restart: {{docker_restart_policy}}
env_file: .env
volumes:
- "admin_data:/data"
- "dkim:/dkim"
{% include 'templates/docker/container/depends-on-database-redis.yml.j2' %}
resolver:
condition: service_started
front:
condition: service_started
logging:
driver: journald
dns:
- {{networks.local.mailu.dns}}
{% include 'templates/docker/container/networks.yml.j2' %}
imap:
image: ghcr.io/mailu/dovecot:{{applications.mailu.version}}
restart: {{docker_restart_policy}}
env_file: .env
volumes:
- "dovecot_mail:/mail"
- "/etc/mailu/overrides:/overrides:ro"
depends_on:
- front
- resolver
dns:
- {{networks.local.mailu.dns}}
logging:
driver: journald
{% include 'templates/docker/container/networks.yml.j2' %}
smtp:
image: ghcr.io/mailu/postfix:{{applications.mailu.version}}
restart: {{docker_restart_policy}}
env_file: .env
volumes:
- "/etc/mailu/overrides:/overrides:ro"
- "smtp_queue:/queue"
depends_on:
- front
- resolver
dns:
- {{networks.local.mailu.dns}}
logging:
driver: journald
{% include 'templates/docker/container/networks.yml.j2' %}
oletools:
image: ghcr.io/mailu/oletools:{{applications.mailu.version}}
hostname: oletools
restart: {{docker_restart_policy}}
depends_on:
- resolver
dns:
- {{networks.local.mailu.dns}}
{% include 'templates/docker/container/networks.yml.j2' %}
noinet:
antispam:
image: ghcr.io/mailu/rspamd:{{applications.mailu.version}}
restart: {{docker_restart_policy}}
env_file: .env
volumes:
- "filter:/var/lib/rspamd"
- "dkim:/dkim"
- "/etc/mailu/overrides/rspamd:/overrides:ro"
depends_on:
- front
- redis
- antivirus
- resolver
dns:
- {{networks.local.mailu.dns}}
logging:
driver: journald
{% include 'templates/docker/container/networks.yml.j2' %}
noinet:
# Optional services
antivirus:
image: clamav/clamav-debian:latest
restart: {{docker_restart_policy}}
env_file: .env
volumes:
- "filter:/data"
depends_on:
- resolver
dns:
- {{networks.local.mailu.dns}}
logging:
driver: journald
{% include 'templates/docker/container/networks.yml.j2' %}
webdav:
image: ghcr.io/mailu/radicale:{{applications.mailu.version}}
restart: {{docker_restart_policy}}
env_file: .env
volumes:
- "webdav_data:/data"
logging:
driver: journald
depends_on:
- resolver
dns:
- {{networks.local.mailu.dns}}
{% include 'templates/docker/container/networks.yml.j2' %}
radicale:
fetchmail:
image: ghcr.io/mailu/fetchmail:{{applications.mailu.version}}
volumes:
- "admin_data:/data"
restart: {{docker_restart_policy}}
env_file: .env
logging:
driver: journald
depends_on:
- admin
- smtp
- imap
- resolver
dns:
- {{networks.local.mailu.dns}}
{% include 'templates/docker/container/networks.yml.j2' %}
webmail:
image: ghcr.io/mailu/webmail:{{applications.mailu.version}}
restart: {{docker_restart_policy}}
env_file: .env
volumes:
- "webmail_data:/data"
- "/etc/mailu/overrides:/overrides:ro"
depends_on:
- imap
- front
- resolver
logging:
driver: journald
dns:
- {{networks.local.mailu.dns}}
{% include 'templates/docker/container/networks.yml.j2' %}
webmail:
{% include 'templates/docker/compose/volumes.yml.j2' %}
smtp_queue:
admin_data:
webdav_data:
webmail_data:
filter:
dkim:
dovecot_mail:
redis:
{% include 'templates/docker/compose/networks.yml.j2' %}
driver: bridge
ipam:
driver: default
config:
- subnet: {{networks.local.mailu.subnet}}
radicale:
driver: bridge
webmail:
driver: bridge
noinet:
driver: bridge
internal: true