Stefan H. schrieb:
> ich möchte bei docker-compose den internen Port 8080 eines Containers
> nicht auf den externen Port 80 des Hosts mappen, sondern auf den Port 80
> des internen named Network.
Das geht nicht von "außerhalb", das muss der Container intern selber
machen.
Dein docker-compose Netzwerk ist am Ende eine Bridge, jeder Container
hängt da mit seinem eigenen veth-Pärchen dran.
mit den "ports"-Angaben im compose-file erzeugst du Port-Weiterleitungen
vom Host auf die Bridge.
Lösungsansätze (ohne Anspruch auf Vollständigkeit)
1) im "msyservice/Dockerfile" direkt auf Port 80 Umkonfiguriern
(Allerdings: Sicherheitsrelevant, der Prozess im Container braucht dann
zumindest bei Startup root)
2) Configfile im myservice von aussen (volume mount) austauschen auf
port 80. (auch wieder root im container benötigt)
3) myservice mit CAP_(NET?)ADMIN starten, im Startup-File von myservice
ein Portforwarding einrichten (iptables -t nat -I ...., auch
sicherheitsrelevant)
4) minimalen Zusatz-Container dazusetzen, der nur eine "webservice:8080
-> portchanger:80" Umsetzung macht. wieder per iptables, oder per
reverse-proxy.
5) andere Container in deinem compose-file konfigurieren, dass sie auf
webservice:8080 zugreifen.
Aus Sicherheitsaspekten ist (5) am besten, (4) mit iptables auch
durchaus OK, weil in 4 nach dem Setup der Container nur noch ein "sleep
forever" ausführen muss, d.H. kaum Angriffsfläche.