2017-04-22 14 views
1

ローカルでうまく動作するakka-httpアプリケーションがあります。アプリケーションを「ドッキング」している問題があります。私はDockerファイルを通してdockerイメージを構築し、docker-entrypointを使ってjava -jarコマンドを実行します。最初に実行中のドッカーコンテナにアクセスすると、アプリケーションは実行されていませんが、コンテナにアクセスしてjava -jarコマンドを手動で実行すると、アプリケーションは正常に起動します。私は(コンテナ内)、次のコマンドを実行するとアプリケーションは、同様に罰金を開始:akka-httpアプリケーションがドッカーの中で実行されています

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"] 

下に見ても、私の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://[email protected]:2552 /khermes.jar 

tail -f /dev/null 

コンテナを実行すると、なぜ私のアプリケーションが強制終了されるのかについてのアイデアはありますか?

答えて

0

代わりにSBT Native Packagerを使用することをおすすめします。私build.scalaはあなたがドッカーハブにあなたのレポを一致させるために、プロジェクトの名前とdockerRepositoryを変更する必要がありますし、次にあなたがsbt docker:publishを呼び出すことによって、それを構築し、展開することができ、この

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 [email protected]("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) 
} 

のように見えます。 Dockerイメージをローカルに公開する場合はsbt docker:publishLocal

関連する問題