我想在Docker容器中的生产中使用prod.conf文件。我把它添加到我的Dockerfile:
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文件。
我想没有许可问题。
这是我的完整Dockerfile:
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
答案 0 :(得分:1)
-D
和配置值之间不应有空格。请改用:
ENTRYPOINT ["bin/myapp", "-Dconfig.resource=prod.conf"]
答案 1 :(得分:0)
如果你使用sbt插件“DockerPlugin”,你可以输入
dockerEntrypoint := Seq("")
。它会导致
ENTRYPOINT [""]
你的Dockerfile中的。那么,你运行docker和你应该在运行命令中指定的图像
bin/myapp "-Dconfig.resource=prod.conf"
即
docker run YOUR_DOCKER_IMAGE bin / myapp“-Dconfig.resource = prod.conf”
注意-D
上的引号答案 2 :(得分:0)
应使用JAVA_OPTS以避免此类错误。
JAVA_OPTS="-Dconfig.resource=prod.conf" bin/myapp
使用命令行systemctl进行搜索。