Mi proyecto se construye muy bien usando sbt docker:publish o sbt docker:publishLocal , pero cuando voy a ejecutar la imagen, falla con el siguiente seguimiento de pila:
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$La imagen es pública en DockerHub bajo eholley/opendar:1.0-SNAPSHOT. (En el comando de ejecución, he omitido un par de variables de entorno, por lo que el resultado esperado debería ser que falla en la configuración basada en application.conf en lugar del error anterior).
Si desea intentar compilarlo y empaquetarlo usted mismo, puede clonar https://0x00F3@bitbucket.org/0x00F3/opendar.git .
El problema no es del todo diferente a este problema , así que como un tiro en la oscuridad, intenté agregar esto
import com.typesafe.sbt.packager.docker.DockerChmodType dockerChmodType := DockerChmodType.UserGroupWriteExecutepor el consejo en el hilo. No parecía cambiar nada.
Tuve que agregar ambos:
construir.sbt
Universal / javaOptions ++= Seq( "-Dpidfile.path=/dev/null" )conf/aplicación.conf
play.server.pidfile.path=/dev/nullEste problema se nota y tiene algunos problemas en varios repositorios en github https://github.com/lightbend/sbt-reactive-app/issues/177
Puede apuntar el archivo pid a /dev/null como sugieren otros o si está utilizando versiones posteriores del empaquetador nativo de sbt, puede establecer los permisos para el usuario de la ventana acoplable a través de la configuración de sbt
dockerChmodType := DockerChmodType.UserGroupWriteExecute