Dockerfile CMD不接受变量

时间:2016-10-12 01:12:31

标签: docker dockerfile

无法在CMD线上使用变量:

#CMD ["/opt/jdk/bin/java", "-jar", "${ARTIFACTID}-${VERSION}.${PACKAGING}"]
CMD ["/opt/jdk/bin/java", "-jar", "ssltools-domain-LATEST.jar"]

最新的线路工作,而不是第一个。

非常感谢任何帮助或解决方法

2 个答案:

答案 0 :(得分:5)

当您将CMD(或ENTRYPOINT)的参数写为JSON字符串时,如...

CMD ["/opt/jdk/bin/java", "-jar", "ssltools-domain-LATEST.jar"]

...该命令直接使用exec系统调用执行,并且未由shell 处理。这意味着没有i / o重定向,没有通配符处理......也没有变量扩展。您可以通过多种方式解决此问题:

  • 您可以将其写为纯字符串,如:

    CMD /opt/jdk/bin/java -jar ${ARTIFACTID}-${VERSION}.${PACKAGING}
    

    当参数不是JSON构造时,它将传递给sh -c

  • 你可以按菲利普的建议行事,并将论据自己传递给sh -c

    CMD ["sh", "-c", "/opt/jdk/bin/java -jar ${ARTIFACTID}-${VERSION}.${PACKAGING}"]
    

    这两个选项基本相同。

  • 第三个选项是将所有内容放入shell脚本中,然后运行:

    COPY start.sh /start.sh
    CMD ["sh", "/start.sh"]
    

    如果您需要执行的不仅仅是一个简单的命令行,这将非常有用。

答案 1 :(得分:1)

首先尝试this little trick

<table id="z_38_a" z.type="zul.box.Box" class="z-hbox" z.zcls="z-hbox" cellpadding="0" cellspacing="0">
    <tbody>
        <tr id="z_38_a!cave" valign="top">
        <td id="z_38_b!chdextr" z.coexist="true" align="left" style="width:7em">        <span id="z_38_b" class="z-label" z.zcls="z-label">ユーザー ID:</span>
        </td>
        <td id="z_38_b!chdextr2" class="z-hbox-sep">
        </td>
        <td id="z_38_c!chdextr" z.coexist="true" align="left" style="width:8em"> <input id="z_38_c" z.type="zul.vd.Txbox" class="z-textbox" z.zcls="z-textbox" type="text" name="j_username" value="admin">
        </td>
        </tr>
    </tbody>
</table>