如何在可执行文件之前将 Java_opts 传递到 dockerfile 中的入口点?
How to pass Java_opts before an executable to entrypoint in 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
如何实现?
您可以使用 ENV
声明环境变量:
...
ADD --chown=daemon:daemon UserPrefExporter.sc /opt/docker
USER daemon
ENV JAVA_OPTS="-Xmx<limit>"
ENTRYPOINT ["./amm", "-h", "amm_home", "UserPrefExporter.sc"]
This post 建议在 ENTRYPOINT
:
中使用明确的 exec
ENTRYPOINT exec java $JAVA_OPTS
我正在 运行使用 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.
如何实现?
您可以使用 ENV
声明环境变量:
...
ADD --chown=daemon:daemon UserPrefExporter.sc /opt/docker
USER daemon
ENV JAVA_OPTS="-Xmx<limit>"
ENTRYPOINT ["./amm", "-h", "amm_home", "UserPrefExporter.sc"]
This post 建议在 ENTRYPOINT
:
exec
ENTRYPOINT exec java $JAVA_OPTS