如何在可执行文件之前将Java_opts传递给dockerfile中的入口点?

时间:2018-02-05 13:10:34

标签: scala docker dockerfile ammonite

我正在运行带有菊石的scala脚本。我需要传递JAVA_OPTS来限制菊石消耗的内存。根据菊石docs,我可以做到这一点 JAVA_OPTS='-Xmx<limit>' amm <scala script>

现在我想在docker容器中运行这个脚本,我正在这样做:

FROM <open jdk image>
WORKDIR /opt/docker
ADD scm-source.json /
ADD --chown=daemon:daemon deps/amm /opt/docker
RUN mkdir amm_home && chown daemon:daemon amm_home
RUN mkdir data && chown daemon:daemon data
ADD --chown=daemon:daemon UserPrefExporter.sc /opt/docker
USER daemon
ENTRYPOINT ["./amm", "-h", "amm_home", "UserPrefExporter.sc"]

运行正常并运行脚本。问题在于将JAVA_OPTS传递给amm ENTRYPOINT要求第一个参数是可执行文件,但我希望在amm之前有JAVA_OPTS。

如何实现这一目标?

2 个答案:

答案 0 :(得分:5)

您可以使用ENV声明环境变量:

...
ADD --chown=daemon:daemon UserPrefExporter.sc /opt/docker
USER daemon
ENV JAVA_OPTS="-Xmx<limit>"
ENTRYPOINT ["./amm", "-h", "amm_home", "UserPrefExporter.sc"]

答案 1 :(得分:0)

This post建议在exec中使用显式ENTRYPOINT

ENTRYPOINT exec java $JAVA_OPTS