docker - 为什么我的 Play Framework for Scala 应用程序的 Docker 映像没有以 AccessDeniedException 开头?
问题描述
问题
sbt docker:publish
我的项目使用or构建得很好sbt docker:publishLocal
,但是当我运行图像时,它会失败并显示以下堆栈跟踪:
eleanor@demo-machine:~/workbench/opendar/opendar$ docker run eholley/opendar:1.0-SNAPSHOT
Oops, cannot start the server.
java.nio.file.AccessDeniedException: /opt/docker/RUNNING_PID
at sun.nio.fs.UnixException.translateToIOException(UnixException.java:84)
at sun.nio.fs.UnixException.rethrowAsIOException(UnixException.java:102)
at sun.nio.fs.UnixException.rethrowAsIOException(UnixException.java:107)
at sun.nio.fs.UnixFileSystemProvider.newByteChannel(UnixFileSystemProvider.java:214)
at java.nio.file.spi.FileSystemProvider.newOutputStream(FileSystemProvider.java:434)
at java.nio.file.Files.newOutputStream(Files.java:216)
at play.core.server.ProdServerStart$.createPidFile(ProdServerStart.scala:136)
at play.core.server.ProdServerStart$.start(ProdServerStart.scala:43)
at play.core.server.ProdServerStart$.main(ProdServerStart.scala:25)
at play.core.server.ProdServerStart.main(ProdServerStart.scala)
eleanor@demo-machine:~/workbench/opendar/opendar$
重现
该图像在 DockerHub 上的 eholley/opendar:1.0-SNAPSHOT 下是公开的。(在运行命令中,我省略了几个环境变量,所以预期的输出应该是基于 application.conf 的配置失败,而不是上述错误。)
如果您想尝试自己构建和打包,可以克隆https://0x00F3@bitbucket.org/0x00F3/opendar.git。
我试过的
这个问题与这个问题并不完全不同,所以在黑暗中我尝试添加这个
import com.typesafe.sbt.packager.docker.DockerChmodType
dockerChmodType := DockerChmodType.UserGroupWriteExecute
根据线程中的建议。它似乎没有改变任何东西。
背景
- Ubuntu 版本 18.04.2 LTS
- Java版openjdk 1.8.0_191
- sbt 版本 1.2.1
- 斯卡拉版本 2.12.6
- sbt-native-packager 版本 1.3.21
- 播放框架版本 2.6.20
解决方案
我不得不同时添加:
构建.sbt
Universal / javaOptions ++= Seq(
"-Dpidfile.path=/dev/null"
)
conf/application.conf
play.server.pidfile.path=/dev/null
推荐阅读
- solr - Solr Range Facet 与 Gap +1Day 给出错误结果
- rxjs - 使用 rxjs switchmap 时的编译问题/错误
- c# - Visual Studio: [DebuggerDisplay], shows "not a valid format specifier" when specifying format
- javascript - 调用函数后,头部脚本中函数的 HTTP GET 数据在正文中不可用
- java - Java Intelij Idea如何添加排水沟图标?
- java - @JsonApiRelationId 和 @JsonApiRelation 有什么区别?
- python-3.x - 如何从单独的属性方法体内访问属性?
- websphere - 重启后Websphere应用程序出错
- r - 如何在一个数据框中合并 2 个字符串列?
- firebase - 如何循环检查项目是否存在于firebase中?