一尘不染

如何在保留新行的同时在Dockerfile中编写多行命令?

docker

我想在Dockerfile中编写以下RUN命令。但是,泊坞窗不保留新行。

RUN echo "[repo] \
name            = YUM Repository \
baseurl         = https://example.com/packages/ \
enabled         = 1 \
gpgcheck        = 0" > /etc/yum.repos.d/Repo.repoxyz

我知道\每一行的末尾都会转义新行。但是,有什么办法可以写多行来保存新行?


阅读 434

收藏
2020-06-17

共1个答案

一尘不染

您可以将称为“ ANSI-C引用” $'...'它最初是 ksh93的
功能,
但现在可以在
bash,zsh,mksh,FreeBSD shbusybox的ash中使用
(但仅当使用ENABLE_ASH_BASH_COMPAT编译时才可用)。

由于默认情况下RUN
/bin/sh用作shell,因此
您需要先使用SHELL指令切换到bash之类的功能。

以开头的命令$',以结尾的命令,'\n\用于换行符,如下所示:

SHELL ["/bin/bash", "-c"]

RUN echo $'[repo] \n\
name            = YUM Repository \n\
baseurl         = https://example.com/packages/ \n\
enabled         = 1 \n\
gpgcheck        = 0' > /etc/yum.repos.d/Repo.repoxyz
2020-06-17