compose: Switch to host-mode port publishing by default (#88)

By default, swarm services use ingress mode port publishing, which is
not ideal for traefik (it breaks IPv6 ingress and there is no need to
load-balance traffic between multiple traefik instances or to route it
from multiple swarm nodes)

This PR switches traefik's port publishing mode to `host` for all of
its exposed ports as well as:

 * change traefik's update order to stop-first (there cannot be multiple
   containers exposing the same port when using host-mode publishing)
 * use `endpoint_mode: dnsrr` instead of the default `vip`
 * remove all overrides from `compose.host.yml`, leaving the file empty
   for backwards compatibility

/!\ This is a breaking change

Closes: #52

* [x] I have deployed and tested my changes
* [x] I have added a [release note entry](https://docs.coopcloud.tech/maintainers/upgrade/#creating-new-release-notes)

Reviewed-on: coop-cloud/traefik#88
Reviewed-by: p4u1 <p4u1@noreply.git.coopcloud.tech>
Reviewed-by: decentral1se <decentral1se@noreply.git.coopcloud.tech>
Co-authored-by: mirsal <mirsal@mirsal.fr>
Co-committed-by: mirsal <mirsal@mirsal.fr>
This commit is contained in:
2026-02-15 18:19:19 +00:00
committed by decentral1se
parent 5f977f1cca
commit b67ed0ca88
17 changed files with 101 additions and 33 deletions

View File

@ -19,8 +19,14 @@ COMPOSE_FILE="compose.yml"
# General settings #
#####################################################################
## Host-mode networking
#COMPOSE_FILE="$COMPOSE_FILE:compose.host.yml"
## Ingress-mode port publishing for ports 80 and 443
##
## /!\ Using this prevents the use of any compose override adding
## published ports to the traefik_app service (almost all of them)
## and it prevents the use of IPv6 for ingress traffic.
## Do not uncomment unless you know exactly what you are doing
##
#COMPOSE_FILE="$COMPOSE_FILE:compose.no-host.yml"
## "Headless mode" (no domain configured)
#COMPOSE_FILE="$COMPOSE_FILE:compose.headless.yml"