wir den Einsatz einer Docker-Bild mit diesem Befehl:Bluemix Docker Containerbereitstellungsergebnisse in "No route to host"
cf ic run -p 8080 -m 512 -e SPRING_PROFILES_ACTIVE=test -e logging.config=classpath:logback-docker-test.xml --name <container-name> registry.eu-gb.bluemix.net/<repository_name>/<container-name>:latest
In diesem Container wir eine Java8 Feder Boot-Anwendung starten, die eine connection- verwendet Pooling-Anbieter. Der Verbindungspooling-Provider stellt eine Verbindung zu einer vorhandenen PostgreSQL-Datenbank her, auf die über den Standardport zugegriffen werden kann. Wir verwenden keinen Domainnamen, um eine Verbindung zur PostgreSQL-Datenbank herzustellen. Wir verwenden nur die IP-Adresse und den Standard-Postgresql-Port.
Die Bereitstellung funktioniert auf einem Computer, der den standardmäßigen Docker-Container-Daemon verwendet und auch ohne Probleme mit Amazon WebServices (AWS) arbeitet und denselben Bereitstellungsmechanismus verwendet.
Wenn wir jedoch das Bild in dem Bluemix-Container-Dienst bereitstellen wir die folgenden Fehler der Feder-Boot-Anwendung beim Start erhalten tun:
Caused by: java.net.NoRouteToHostException: No route to host
at java.net.PlainSocketImpl.socketConnect(Native Method)
at java.net.AbstractPlainSocketImpl.doConnect(AbstractPlainSocketImpl.java:350)
at java.net.AbstractPlainSocketImpl.connectToAddress(AbstractPlainSocketImpl.java:206)
at java.net.AbstractPlainSocketImpl.connect(AbstractPlainSocketImpl.java:188)
at java.net.SocksSocketImpl.connect(SocksSocketImpl.java:392)
at java.net.Socket.connect(Socket.java:589)
at org.postgresql.core.PGStream.<init>(PGStream.java:61)
at org.postgresql.core.v3.ConnectionFactoryImpl.openConnectionImpl(ConnectionFactoryImpl.java:129)
at org.postgresql.core.ConnectionFactory.openConnection(ConnectionFactory.java:65)
at org.postgresql.jdbc2.AbstractJdbc2Connection.<init>(AbstractJdbc2Connection.java:146)
at org.postgresql.jdbc3.AbstractJdbc3Connection.<init>(AbstractJdbc3Connection.java:35)
at org.postgresql.jdbc3g.AbstractJdbc3gConnection.<init>(AbstractJdbc3gConnection.java:22)
at org.postgresql.jdbc4.AbstractJdbc4Connection.<init>(AbstractJdbc4Connection.java:47)
at org.postgresql.jdbc42.AbstractJdbc42Connection.<init>(AbstractJdbc42Connection.java:21)
at org.postgresql.jdbc42.Jdbc42Connection.<init>(Jdbc42Connection.java:28)
at org.postgresql.Driver.makeConnection(Driver.java:415)
at org.postgresql.Driver.access$100(Driver.java:47)
at org.postgresql.Driver$ConnectThread.run(Driver.java:325)
... 1 more
Wir wissen nicht, warum dies geschieht, denn wenn wir ein Telnet auf einer anderen Bluemix-Docker-Machine zum PostgreSQL-Database Server mit dem gewünschten Port machen, ist alles in Ordnung.
Das ist sehr ärgerlich, da wir dieses Docker-Image derzeit nicht auf Bluemix verwenden können und derzeit unseren geplanten Rollout behindern.
Können Sie uns mit Details helfen, was könnte falsch sein und wie kann dies behoben werden?
Jede Hilfe wird geschätzt.
Grüße,
Christian
Danke für Ihre Antwort und Kommentar. Leider ist dies ein wenig enttäuschend, denn auf dem Docker Service bei AWS oder mit Docker direkt auf einem Ihrer internen Systeme ist alles in Ordnung mit dem gleichen Docker-Image. Wir müssen also nur ein paar Änderungen am Docker-Image vornehmen, um Bluemix zu unterstützen. Ich denke, das ist nicht die Idee hinter einem unabhängigen Docker-Image. Wie auch immer, haben Sie einen Vorschlag/einen Hinweis zu warten, bis die Netzwerkverbindung hergestellt wurde? –