生产中的 Play Framework 2.5:"bad root server path"

Play Framework 2.5 in production: "bad root server path"

我想在 Docker 容器内的生产环境中使用 prod.conf 文件。我将其添加到我的 Docker 文件中:

ENTRYPOINT ["bin/myapp", "-D", "config.resource=prod.conf"]

但是我得到了这个错误:

Bad root server path: /opt/docker/-D

当我尝试以 root运行 手动执行命令时出现同样的错误

/opt/docker/bin/myapp -D config.resource=prod.conf

如果我运行

/opt/docker/bin/myapp

它可以工作,但使用默认的 application.conf 文件。

估计没有权限问题。

这是我的完整 Docker 文件:

FROM openjdk:8u121-alpine
WORKDIR /opt/docker
ADD opt /opt
RUN ["chown", "-R", "daemon:daemon", "."]
EXPOSE 9000
USER daemon
ENTRYPOINT ["bin/myapp", "-D", "config.resource=prod.conf"]
CMD []

编辑:

我在本地遇到同样的错误:

activator clean stage
target/universal/stage/bin/myapp -D config.resource=prod.conf
Bad root server path: /home/me/Documents/MyApp-D

-D 和配置值之间不应有 space。改用这个:

ENTRYPOINT ["bin/myapp", "-Dconfig.resource=prod.conf"]

如果你使用 sbt 插件 "DockerPlugin" 你可以输入

dockerEntrypoint := Seq("")

在您的 build.sbt 文件中。它会导致

ENTRYPOINT [""]

在您的 Dockerfile 中。所以,那么你 运行 docker 你应该在 运行 命令中指定以下 运行 和你的图像

bin/myapp "-Dconfig.resource=prod.conf"

docker 运行 YOUR_DOCKER_IMAGE bin/myapp "-Dconfig.resource=prod.conf"

注意-D

上的引号
应使用

JAVA_OPTS来避免此类错误。

JAVA_OPTS="-Dconfig.resource=prod.conf" bin/myapp

适用于命令行、systemctl。