KIX - Forum
Community => Fragen | Konfiguration | Hilfe => Thema gestartet von: verrac am 02.12.2020 17:59:56
Hallo zusammen,
ich habe ein Testsystem unter Debian 10.4 mit KIX18start on-premise eingerichet. Das Backend ist auch unter Port 20000 erreichbar.Aber wenn ich mir die die Proxy-Konfig anschaue sollte es auch unter Port 80 erreichbar sein. Der Proxy-Container scheint zu laufen aber es klappt nicht.Die Installationsanleitung ist dort leider auch dürftig. Hat vielleicht jemand einen Tipp für mich, was ich ggf. falsch mache?
Grüße, verrac
Hallo,
die ssl.conf enthält die Konfigurationen der Ports, auf denen der nginx-Proxy "lauschen" soll. Das ist dann aber nur "Container-intern" bzw. "Stack-intern". Genau diese Ports werden auf die im environment-File angegebenen lokalen Ports gemappt, damit der Stack mit der Aussenwelt kommunizieren kann. Ohne das Mapping auf lokale Ports kann ein Container nicht mit ausserhalb kommunizieren. Der nginx-Proxy ist aus Gründen der individuellen Absicherung und Integration in die jeweils vorhandene Infrastruktur, den eigentlichen Applikationsservices vorgeschaltet.
Viele Grüße
René
Hallo,
ich habe also quasi genau umgekehrt gedacht. Innerhalb des Containers lauscht KIX also auf den Ports 80,443,8080 usw. und diese werden durch den Proxy nach extern auf 20000, 20001 usw. gemappt.
root@kix18:/srv/kix-on-premise/linux# docker container port 79
443/tcp -> 0.0.0.0:20444
80/tcp -> 0.0.0.0:20001
8080/tcp -> 0.0.0.0:20000
8443/tcp -> 0.0.0.0:20443
9080/tcp -> 0.0.0.0:20002
9443/tcp -> 0.0.0.0:20445
Gibt es die Möglichkeit nicht nur den Port sondern auch die IP vorzugeben? Oder muss ich auf dem Host einen weiteren Proxy einrichten, da auf dem Host bereits Apache2 auf Port 80 läuft.
Bsp.:
root@kix18:/srv/kix-on-premise/linux# docker container port 79
443/tcp -> 10.0.20.80:20444
80/tcp -> 10.0.20.80:20001
8080/tcp -> 10.0.20.80:20000
8443/tcp -> 10.0.20.80:20443
9080/tcp -> 10.0.20.80:20002
9443/tcp -> 10.0.20.80:20445
Grüße, verrac
Hallo nochmal,
hab es selber gefunden.
Einfach die environment-Datei wie folgt editieren:
# the port on the docker host system where the backend service is listening
BACKEND_PORT=10.0.20.80:20000
BACKEND_PORT_SSL=10.0.20.80:20443
FRONTEND_PORT=10.0.20.80:20001
FRONTEND_PORT_SSL=10.0.20.80:20444
Grüße, verrac
Die IPs werden nicht benötigt. Einfach nur den Port hinschreiben. Der wird dann auf lokalen Host (nicht localhost ;)) gemappt. Oder hat der Host mehrere Service-IPs ?
Viele Grüße
René
Doch der Server hat mehrere IPs und auf manchen ist Port 80 bereits besetzt.
apache2 15246 www-data 3u IPv4 14882 0t0 TCP 10.0.20.230:http (LISTEN)
apache2 15246 www-data 4u IPv4 14884 0t0 TCP 10.0.20.232:http (LISTEN)
apache2 15246 www-data 5u IPv4 14886 0t0 TCP 10.0.20.233:http (LISTEN)
docker-pr 21140 root 4u IPv4 143205 0t0 TCP 10.0.20.231:9443 (LISTEN)
docker-pr 21153 root 4u IPv4 143245 0t0 TCP 10.0.20.231:9080 (LISTEN)
docker-pr 21166 root 4u IPv4 143283 0t0 TCP 10.0.20.231:8443 (LISTEN)
docker-pr 21179 root 4u IPv4 142220 0t0 TCP 10.0.20.231:http-alt (LISTEN)
docker-pr 21194 root 4u IPv4 142258 0t0 TCP 10.0.20.231:https (LISTEN)
docker-pr 21207 root 4u IPv4 142296 0t0 TCP 10.0.20.231:http (LISTEN)
Evtl. gehört mein Anliegen in diesen Thread:
Ich wollte mich gerade in den Backend-Container einklinken und erhielt folgende Meldungen:
root@docker-playground:/opt/kix18-capeit/linux# docker-compose exec kix_backend_1 /bin/bash
ERROR: The Compose file './docker-compose.yml' is invalid because:
services.proxy.ports is invalid: Port ranges don't match in length
services.proxy.ports is invalid: Port ranges don't match in length
services.proxy.ports is invalid: Port ranges don't match in length
services.proxy.ports is invalid: Port ranges don't match in length
services.proxy.ports is invalid: Port ranges don't match in length
services.proxy.ports is invalid: Port ranges don't match in length
Hi Sebastian,
sorry, deine Nachricht ist mir leider durch die Lappen gegangen. Da die Ports in der environment-File gepflegt werden und darüber, gibt es die shell-Scripte (start.sh, stop.sh, ...). Diese bereiten die Informationen aus der File entsprechend auf und "versorgen" damit docker-compose, damit es die korrekten Umgebungsvariablen erhält.
In deinem Falle nutzt ein direktes "exec" von docker-compose. Damit versucht compose etwas mit der yml-File anzustellen, kommt aber nicht weiter, da die relevanten Umgebungsvariablen nicht vorhanden sind. Du kannst aber problemlos ein "docker exec" auf den Container machen, dann treten diese Fehler nicht auf.
Aber eine andere Frage: warum musst du im Container etwas machen ?
Viele GrüßeRené
Ist zu lange her, keine Ahnung ^^