我試圖使用SBT-本機打包製作我的斯卡拉發揮應用程序的一個碼頭工人的形象,我也跟着在http://www.scala-sbt.org/sbt-native-packager/formats/docker.htmlSBT-本機打包斯卡拉發揮dockerfile不是默認的配置運行
描述的步驟這是我的配置:
我plugins.sbt我增加了對依賴本土SBT打包:
// SBT Native
addSbtPlugin("com.typesafe.sbt" % "sbt-native-packager" % "1.2.1")
我build.sbt我加入通用和泊塢窗插件:
.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: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 /運行/根/播放。 PID
這似乎是Dockerfile缺少一些步驟,它應該的mkdir /var/run/{APP_NAME}/
(*搬運工容器實例內創建文件夾)
和chown,爲了文件夾下找到發揮創造在P ID文件。
如何解決上述錯誤?
感謝您的額外信息。我確實檢查了你的鏈接,並且我遇到了一個問題,我的遊戲應用程序不能正常工作,我在上面添加了一些更多細節,並且遵循了你的建議,似乎來自sbt-native-packager的結果圖像缺少步驟它創建文件夾/ var/run/{app_name} /(PID文件),我需要將這些步驟添加爲我的build.sbt中的自定義字段嗎? – guilhebl
Dockerfile嘗試創建/var/run/${packageName.value}/文件夾並獲取權限被拒絕,所以我認爲它應該以root身份運行?對於上述問題的任何建議?謝謝。 – guilhebl
您可以通過將其設置爲'/ dev/null'來禁用pid文件。它在遊戲應用程序中有記錄。對docker使用pid文件沒有意義。 – Muki