如何在dockerfile中转义$符号?

我正在尝试编写一个dockerfile,其中向名为envvars的脚本中添加了一些Java选项。 为此,我想在上述文件中添加一些文本行,如下所示:

_startedAt

这里的问题是,我想要杂项。占位符$ {varname}(带有花括号的占位符)在执行docker build命令的过程中将被替换,而子字符串'$ JAVA_OPTS'(即那些没有花括号的)应回显并因此逐字添加到envvars文件中,即最后RUN echo "JAVA_OPTS=$JAVA_OPTS -Djavax.net.ssl.trustStore=${CERT_DIR}/${HOSTNAME}_truststore.jks" >> ${BIN_DIR}/envvars RUN echo "JAVA_OPTS=$JAVA_OPTS -Djavax.net.ssl.trustStorePassword=${PWD_TRUSTSTORE}" >> ${BIN_DIR}/envvars RUN echo "export JAVA_OPTS" >> ${BIN_DIR}/envvars 文件中的结果应显示为:

/usr/local/apache2/bin/envvars

如何从dockerfiles中的变量替换中逃脱$符号? 我发现使用\ $或$$的提示,但都没有用。

万一重要(我希望/不希望如此):我正在Windows 10上使用“ Docker桌面”构建映像,但我希望dockerfile对此不可知。

i459612852 回答:如何在dockerfile中转义$符号?

首先,您需要将此#escape =`添加到Dockerfile中,因为\是Dockerfile中的转义字符。那么您可以使用\$部分中的RUN转义美元符号

示例:

# escape=`
RUN echo "JAVA_OPTS=\$JAVA_OPTS -Djavax.net.ssl.trustStore=${CERT_DIR}/${HOSTNAME}_truststore.jks" >> ${BIN_DIR}/envvars 

这将是您的环境文件中的JAVA_OPTS=$JAVA_OPTS

本文链接:https://www.f2er.com/3166720.html

大家都在问