Dockerfile で複数行のコマンドを新しい行を保持しながら記述するにはどうすればよいでしょうか? 質問する

Dockerfile で複数行のコマンドを新しい行を保持しながら記述するにはどうすればよいでしょうか? 質問する

Dockerfile に次の RUN コマンドを記述したいのですが、docker は新しい行を保持しません。

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

\各行の末尾で新しい行がエスケープされることはわかっています。しかし、新しい行を保持したまま複数の行を記述する方法はありますか?

ベストアンサー1

では、「ANSI-C 引用符」と呼ばれるものを使用できます$'...'もともとはキシュ93特徴しかし、現在ではbash、zsh、mksh、FreeBSD shそしてビジーボックスの灰(ただし、ENABLE_ASH_BASH_COMPAT でコンパイルされている場合のみ)。

としてRUNは/bin/shデフォルトでシェルとして使用しますまず 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

おすすめ記事