From b38a01d6cdbcfd8f519d9c2a39fb41649b7c0eb8 Mon Sep 17 00:00:00 2001 From: Teck Meng Date: Thu, 13 Jun 2024 11:47:12 +0800 Subject: [PATCH] Refactor makefile to add deployment for mailserver stack --- makefile | 8 +++++++ swarm/mailserver.yml | 54 ++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 62 insertions(+) create mode 100644 swarm/mailserver.yml diff --git a/makefile b/makefile index e2cc92e..07e1426 100644 --- a/makefile +++ b/makefile @@ -121,4 +121,12 @@ deploy-searxng: pull set +a ;\ docker stack deploy --compose-file ./swarm/searxng.yml searxng ;\ } +deploy-mailserver: pull + { \ + echo "Deploying the mailserver stack..." ;\ + set -a ;\ + . ./swarm/.env ;\ + set +a ;\ + docker stack deploy --compose-file ./swarm/mailserver.yml mailserver ;\ + } # git submodule update --init --recursive \ No newline at end of file diff --git a/swarm/mailserver.yml b/swarm/mailserver.yml new file mode 100644 index 0000000..caa6182 --- /dev/null +++ b/swarm/mailserver.yml @@ -0,0 +1,54 @@ +services: + mail: + image: tvial/docker-mailserver:latest + ports: + - target: 25 + published: 25 + protocol: tcp + mode: host + - target: 587 + published: 587 + protocol: tcp + mode: host + - target: 993 + published: 993 + protocol: tcp + mode: host + - target: 995 + published: 995 + protocol: tcp + mode: host + volumes: + - /var/data/docker-mailserver/maildata:/var/mail + - /var/data/docker-mailserver/mailstate:/var/mail-state + - /var/data/docker-mailserver/config:/tmp/docker-mailserver + - /var/data/docker-mailserver/letsencrypt:/etc/letsencrypt + env_file: /var/data/docker-mailserver/docker-mailserver.env + networks: + - internal + + rainloop: + image: hardware/rainloop + volumes: + - /var/data/docker-mailserver/rainloop:/rainloop/data + networks: + - internal + - traefik-public + deploy: + labels: + - traefik.enable=true + - traefik.docker.network=traefik-public + - traefik.constraint-label=traefik-public + - traefik.http.routers.rainloop.entrypoints=https + - traefik.http.routers.rainloop.rule=Host(`webmail.${DOMAIN}`) + - traefik.http.routers.rainloop.tls.certresolver=le + - traefik.http.services.rainloop.loadbalancer.server.port=8888 + +networks: + traefik-public: + external: true + internal: + driver: overlay + ipam: + config: + - subnet: 172.16.2.0/24 \ No newline at end of file