Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Docker Akka-Http application endpoint not reachable

Tags:

docker

scala

akka

I have a very basic Akka-http app that is basically not much more than a Hello-world setup - I have defined an endpoint and simply bound it to "localhost" and port "8080":

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 is mixed in via Routes, but is just a dummy endpoint that serialises a simple case class to a JSON response)

If I start it up using sbt then the endpoints works fine (http://localhost:8080/colour/red for example).

I am now trying to package it into a Docker container to run it - I have read things like http://yeghishe.github.io/2015/06/24/running-akka-applications.html and have added the sbt-native-package plugin (http://www.scala-sbt.org/sbt-native-packager/formats/docker.html#customize).

Now I run sbt docker:publishLocal

And I can see that the docker image has been created:

REPOSITORY             TAG                 IMAGE ID            CREATED             SIZE
sample-rest-api        0.0.1               3c6ee44985b4        9 hours ago         714.4 MB

If I now start my image, mapping the 8080 port as follows:

docker run -p 8080:8080 sample-rest-api:0.0.1

I see the log output I normally see on startup, so it looks like it has started ok, however, if I then attempt to access the same URL as previously I now get the response

"Problem loading the page: The connection was reset"

If I check docker ps I see that the image is running, and the ports mapped as expected:

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

I am running on Ubuntu 16.04 - anyone have any ideas?

like image 840
rhinds Avatar asked Jun 11 '16 07:06

rhinds


1 Answers

Try changing 'localhost' to 0.0.0.0 In the http.bindAndHandle

like image 128
Ciaran0 Avatar answered Oct 30 '22 07:10

Ciaran0