2017-04-18 58 views
2

我想在Docker容器中生產中使用prod.conf文件。我說這個我Dockerfile:在生產中播放框架2.5:「壞的根服務器路徑」

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

但我得到這個錯誤:當我嘗試手動以root身份運行命令

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

我得到同樣的錯誤

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

如果我跑

/opt/docker/bin/myapp 

它wor但使用默認的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

不確定你的'ADD opt/opt'應該是'ADD/opt/opt'嗎? – user2915097

+0

@ user2915097 nop。 opt目錄不在我的/ opt目錄中。這是在分期運行。 dockerizing之前的 – didil

+0

,請確保應用程序在本地計算機上成功運行。即 SBT階段 /路徑/爲/ bin -D config.reousce = prod.conf 若不會啓動應用程序,搬運工必將失敗 – LiorH

回答

0

應該有-D和配置之間沒有空格值。使用這個來代替:

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

''「bin/myapp」,「-D」,「config.resource = prod.conf」]和'[「bin/myapp」,「-Dconfig.resource = prod.conf」]是嚴格等價的。 – didil

+0

@didil你試過了嗎?首先應該導致'bin/myapp -D config.resource = prod。conf',第二個會導致'bin/myapp -Dconfig.resource = prod.conf'。 – Salem

+0

是的,我已經嘗試過,但我知道它是相同的。選項後的空格總是可選的。 – didil

0

如果使用SBT插件 「DockerPlugin」 你可以在你build.sbt文件類型

dockerEntrypoint := Seq("")

。這將導致您的Dockerfile中的

ENTRYPOINT [""] 

。因此,然後運行搬運工人用你的形象,你應該在運行命令指定以下

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

搬運工運行YOUR_DOCKER_IMAGE斌/ MYAPP 「-Dconfig.resource = prod.conf」

收費注意引用-D