2016-06-11 8 views
4

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?

Antwort

11

Try ‚localhost‘ auf 0.0.0.0 Im http.bindAndHandle

+0

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