【问题标题】:How to pass Java_opts before an executable to entrypoint in dockerfile?如何在可执行文件之前将 Java_opts 传递到 dockerfile 中的入口点?
【发布时间】:2018-07-15 08:33:30
【问题描述】:

我正在使用 ammonite 运行 scala 脚本。我需要通过 JAVA_OPTS 来限制 ammonite 消耗的内存。根据菊石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。

如何做到这一点?

【问题讨论】:

    标签: scala docker dockerfile ammonite


    【解决方案1】:

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

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

    【讨论】:

      【解决方案2】:

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

      ENTRYPOINT exec java $JAVA_OPTS
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2021-07-10
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2020-11-11
        相关资源
        最近更新 更多