Ich habe eine sehr einfache Akka-http-Anwendung, die im Grunde nicht viel mehr als ein Hallo-Welt-Setup ist - Ich habe einen Endpunkt definiert und einfach an "localhost" und Port "8080 gebunden „:Docker Akka-Http-Anwendungsendpunkt nicht erreichbar
object Main extends App with Routes {
private implicit val system = ActorSystem()
protected implicit val executor: ExecutionContext = system.dispatcher
protected implicit val materializer: ActorMaterializer = ActorMaterializer()
protected val log: LoggingAdapter = Logging(system, getClass)
log.info("starting server")
Http().bindAndHandle(logRequestResult("log",Logging.InfoLevel)(allRoutes), "localhost", 8080)
log.info("server started, awaiting requests..")
}
(allRoutes gemischt in über Routen, sondern ist nur ein Dummy-Endpunkt, der einen einfachen Fall-Klasse in eine JSON-Antwort serialisiert)
Wenn ich es starten mit sbt dann die Endpunkte funktioniert gut (http://localhost:8080/colour/red zum Beispiel).
Ich versuche jetzt, es in einen Docker-Container zu packen, um es zu starten - Ich habe Dinge wie http://yeghishe.github.io/2015/06/24/running-akka-applications.html gelesen und das sbt-native-Paket-Plugin (http://www.scala-sbt.org/sbt-native-packager/formats/docker.html#customize) hinzugefügt.
Jetzt laufe ich sbt docker:publishLocal
Und ich kann sehen, dass das Docker Bild erstellt wurde:
REPOSITORY TAG IMAGE ID CREATED SIZE
sample-rest-api 0.0.1 3c6ee44985b4 9 hours ago 714.4 MB
Wenn ich jetzt mein Bild beginnen, die Abbildung der 8080-Port wie folgt:
docker run -p 8080:8080 sample-rest-api:0.0.1
Ich sehe die Log-Ausgabe, die ich normalerweise beim Start sehe, so sieht es aus wie es in Ordnung gestartet ist, aber wenn ich dann versuche, auf die gleiche URL wie zuvor zuzugreifen, bekomme ich jetzt die Antwort
„Problem Laden der Seite: Die Verbindung wurde zurückgesetzt“
Wenn ich docker ps
prüfe ich sehen, dass das Bild läuft, und die wie erwartet zugeordneten Ports:
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
27848729a425 sample-rest-api:0.0.1 "bin/sample-rest-api" About a minute ago Up About a minute 0.0.0.0:8080->8080/tcp furious_heisenberg
ich auf Ubuntu leite 16.04 - hat jemand irgendwelche Ideen?
Awww Mann verändert sich - ich Verdacht hatte, dass es aufgrund der Host-Mapping war, und hatte 127.0.0.1 versucht und es programmatisch java bekommen. net.InetAddress.getLoopbackAddress.getHostAddress() - aber das hat den Job gemacht !! Ich habe Stunden damit verschwendet .. – rhinds