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

dee*_*eep 5 scala docker dockerfile ammonite

我正在运行一个带有菊石的scala脚本.我需要传递JAVA_OPTS来限制菊石消耗的内存.根据菊石文档,我可以做到这一点
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"]
Run Code Online (Sandbox Code Playgroud)

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

怎么做到这一点?

Mar*_*ius 6

这篇文章exec建议在以下位置使用显式ENTRYPOINT

ENTRYPOINT exec java $JAVA_OPTS
Run Code Online (Sandbox Code Playgroud)


小智 5

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

...
ADD --chown=daemon:daemon UserPrefExporter.sc /opt/docker
USER daemon
ENV JAVA_OPTS="-Xmx<limit>"
ENTRYPOINT ["./amm", "-h", "amm_home", "UserPrefExporter.sc"]
Run Code Online (Sandbox Code Playgroud)