我正在运行带有菊石的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。
如何实现这一目标?
答案 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