sbt-native-packager scala play dockerfile没有运行默认configuration

我正在尝试使用sbt-native-packager来生成我的Scala应用程序的Docker镜像,我遵循了http://www.scala-sbt.org/sbt-native-packager/formats/docker中描述的步骤html的

这是我的configuration:

在我的plugins.sbt我添加了sbt本地包装器的依赖关系:

// SBT Native addSbtPlugin("com.typesafe.sbt" % "sbt-native-packager" % "1.2.1") 

在我的build.sbt我添加了通用和docker的插件:

 .enablePlugins(PlayScala, JavaAppPackaging) 

我还添加了一些额外的属性:

 javaOptions in Universal ++= Seq( // JVM memory tuning "-J-Xmx1024m", "-J-Xms512m", // Since play uses separate pidfile we have to provide it with a proper path // name of the pid file must be play.pid s"-Dpidfile.path=/var/run/${packageName.value}/play.pid", // Use separate configuration file for production environment s"-Dconfig.file=/usr/share/${packageName.value}/conf/production.conf", // Use separate logger configuration file for production environment s"-Dlogger.file=/usr/share/${packageName.value}/conf/logback.xml" ) // exposing the play ports dockerExposedPorts in Docker := Seq(9000, 9443) 

然后我使用插件和SBT CLI生成docker镜像:

 docker:publishLocal 

dockerfile在./target/docker/Dockerfile生成

当我检查我看到的文件时:

 FROM openjdk:latest WORKDIR /opt/docker ADD opt /opt RUN ["chown", "-R", "daemon:daemon", "."] USER daemon ENTRYPOINT ["bin/root"] CMD [] 

这似乎并不包含运行应用程序的所有必要步骤,当我使用docker build . 我得到:

java.nio.file.NoSuchFileException:/var/run/root/play.pid

看起来像Dockerfile缺less一些应该mkdir /var/run/{APP_NAME}/ (*在Docker容器实例中创build文件夹)

并将该文件夹播放以创buildPID文件。

如何解决上述错误?

启动Docker镜像时的错误信息是什么,以及如何启动它?

那么有一些值得注意的事情。

与本地包装商玩船

你不应该添加任何插件,但只configurationdocker相关的东西。 您已经链接了封装格式 (docker)的正确文档。

原型VS格式

没有播放插件,您的configuration将无法正常工作。 看看http://www.scala-sbt.org/sbt-native-packager/archetypes/java_app/index.html ,它解释了如何configuration一个简单的应用程序构build。

我也build议阅读这里的格式和原型部分: http : //www.scala-sbt.org/sbt-native-packager/introduction.html#archetype-plugins

本机docker构build

Native-packager当前会生成两个docker文件,这是令人困惑和不相关的。 对不起,这个混乱。 我们计划删除冗余泊坞窗文件。 只需深入一层,运行docker build命令即可。

希望有帮助,Muki