在docker内部运行的akka http应用程序

在docker内部运行的akka http应用程序,docker,dockerfile,akka-http,Docker,Dockerfile,Akka Http,我有一个akka http应用程序,在本地运行良好,我在“对接”应用程序时遇到了一些问题。我通过Dockerfile构建docker映像,并使用docker入口点执行java-jar命令。当我第一次访问正在运行的docker容器时,应用程序没有运行,尽管如果我访问容器并手动执行java-jar命令,应用程序启动正常。如果执行以下命令(在容器内),应用程序也会正常启动: bash -xe docker-entrypoint.sh 见下面我的Dockerfile FROM qa.stratio.c

我有一个akka http应用程序,在本地运行良好,我在“对接”应用程序时遇到了一些问题。我通过Dockerfile构建docker映像,并使用docker入口点执行java-jar命令。当我第一次访问正在运行的docker容器时,应用程序没有运行,尽管如果我访问容器并手动执行java-jar命令,应用程序启动正常。如果执行以下命令(在容器内),应用程序也会正常启动:

bash -xe docker-entrypoint.sh
见下面我的Dockerfile

FROM qa.stratio.com/stratio/ubuntu-base:16.04

MAINTAINER stratio

ARG VERSION

RUN apt-get update && apt-get install -y screen

COPY target/khermes-${VERSION}-allinone.jar /khermes.jar
COPY docker/docker-entrypoint.sh /
COPY src/main/resources/application.conf /

EXPOSE 8080

ENTRYPOINT ["/docker-entrypoint.sh"]
另请参见下面的my docker-entrypoint.sh:

#!/bin/bash -xe

java -jar -Dkhermes.client=false -Dakka.remote.hostname=localhost -
Dakka.remote.netty.tcp.port=2553 -Dakka.cluster.seed-
nodes.0=akka.tcp://khermes@localhost:2552 /khermes.jar

tail -f /dev/null
有人知道为什么在我运行容器时我的应用程序会被杀死吗

我建议改用。我的
build.scala
如下所示

import com.typesafe.sbt.packager.archetypes.JavaAppPackaging
import com.typesafe.sbt.packager.docker.{Cmd, DockerPlugin}
import com.typesafe.sbt.packager.docker.DockerPlugin.autoImport._
import sbt._
import Keys._

object build extends Build {

  lazy val root: Project = Project(
    id = "my-awesome-server",
    base = file("."),
    settings = Defaults.coreDefaultSettings ++ Seq(

      resolvers ++= {
        Seq(
          "sonatype snapshots" at "https://oss.sonatype.org/content/repositories/snapshots"
      },

      organization := "co.awesome-startup",
      version := "2.69",
      scalaVersion := "2.11.8",
      libraryDependencies ++= {
        Seq(
          "org.tpolecat" %% "atto-core"  % "0.4.2" withSources()
        )
      },
      dockerBaseImage := "expert/docker-java-minimal:server-jre",
      dockerCommands := dockerCommands.value.flatMap {
        case cmd@Cmd("FROM", _) => List(cmd, Cmd("RUN", "apk update && apk add bash"))
        case other => List(other)
      },
      dockerRepository := Some("awesome-startup"),
      version in Docker := version.value,

      scalacOptions := Seq("-unchecked", "-deprecation", "-encoding", "utf8", "-language:implicitConversions", "-language:postfixOps", "-language:higherKinds", "-Xcheckinit"), //, "-Xlog-implicits"),
      javaOptions in compile += "-g:source,lines,vars",
      crossPaths := false,
      mainClass in  Compile := Some("co.awesome-startup.server.EntryPoint")
    )
  ).enablePlugins(JavaAppPackaging).
    enablePlugins(DockerPlugin)
}
您需要更改项目名称和
dockerRepository
以匹配Docker Hub中的回购,然后您可以通过调用
sbt Docker:publish来构建和部署它。如果您想在本地发布Docker映像,请调用sbt Docker:publishLocal

我建议改用。我的
build.scala
如下所示

import com.typesafe.sbt.packager.archetypes.JavaAppPackaging
import com.typesafe.sbt.packager.docker.{Cmd, DockerPlugin}
import com.typesafe.sbt.packager.docker.DockerPlugin.autoImport._
import sbt._
import Keys._

object build extends Build {

  lazy val root: Project = Project(
    id = "my-awesome-server",
    base = file("."),
    settings = Defaults.coreDefaultSettings ++ Seq(

      resolvers ++= {
        Seq(
          "sonatype snapshots" at "https://oss.sonatype.org/content/repositories/snapshots"
      },

      organization := "co.awesome-startup",
      version := "2.69",
      scalaVersion := "2.11.8",
      libraryDependencies ++= {
        Seq(
          "org.tpolecat" %% "atto-core"  % "0.4.2" withSources()
        )
      },
      dockerBaseImage := "expert/docker-java-minimal:server-jre",
      dockerCommands := dockerCommands.value.flatMap {
        case cmd@Cmd("FROM", _) => List(cmd, Cmd("RUN", "apk update && apk add bash"))
        case other => List(other)
      },
      dockerRepository := Some("awesome-startup"),
      version in Docker := version.value,

      scalacOptions := Seq("-unchecked", "-deprecation", "-encoding", "utf8", "-language:implicitConversions", "-language:postfixOps", "-language:higherKinds", "-Xcheckinit"), //, "-Xlog-implicits"),
      javaOptions in compile += "-g:source,lines,vars",
      crossPaths := false,
      mainClass in  Compile := Some("co.awesome-startup.server.EntryPoint")
    )
  ).enablePlugins(JavaAppPackaging).
    enablePlugins(DockerPlugin)
}
您需要更改项目名称和
dockerRepository
以匹配Docker Hub中的回购,然后您可以通过调用
sbt Docker:publish来构建和部署它。如果要在本地发布Docker图像,请调用
sbt Docker:publishLocal