[解決済み] Dockerfileに複数行のコマンドを改行を維持したまま記述する方法とは?
2022-08-14 11:04:01
質問
Dockerfileに以下のようなRUNコマンドを書きたいのですが、Dockerが改行を保存してくれません。しかし、dockerが改行を保存してくれません。
RUN echo "[repo] \
name = YUM Repository \
baseurl = https://example.com/packages/ \
enabled = 1 \
gpgcheck = 0" > /etc/yum.repos.d/Repo.repoxyz
私が知っているのは
\
で改行がエスケープされることは知っています。しかし、改行を保持したまま複数行を記述する方法はないでしょうか?
どのように解決するのですか?
ANSI-C quoting"と呼ばれるものは、以下のように使用することができます。
$'...'
.
これは元々
ksh93
機能
で利用可能ですが、現在では
bash, zsh, mksh, FreeBSD sh
と
busybox の ash
を使うことができます (ただし 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
関連
-
[解決済み] Dockerfileを使って複数のファイルを1階層でコピーするには?
-
[解決済み] Dockerfileの'COPY'と'ADD'コマンドの違いは何ですか?
-
[解決済み] Docker-Composeを使用して、複数のコマンドを実行する方法
-
[解決済み] Docker Compose: そのようなイメージはありません
-
[解決済み] docker-composeでDockerコンテナに固定IPを提供する
-
[解決済み] Docker compose、net:hostでコンテナを実行する。
-
[解決済み] docker login unknown shortorthand flag: 'e'
-
[解決済み] dockerのホストOSとコンテナのベースイメージOSの関係を教えてください。
-
[解決済み] ディレクトリをファイルにマウントしようとしていませんか(またはその逆)?
-
[解決済み] Dockerのデタッチドモード
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み] Docker Compose: そのようなイメージはありません
-
[解決済み] Docker compose、net:hostでコンテナを実行する。
-
[解決済み] Dockerです。dockerコンテナでnanoを実行する
-
[解決済み] dockerのホストOSとコンテナのベースイメージOSの関係を教えてください。
-
[解決済み] docker unauthorized: 認証が必要 - ログインに成功するとプッシュされる
-
[解決済み] Alpine Dockerfile --no-cache Vs. rm /var/cache/apk/* の利点。
-
[解決済み] ディレクトリをファイルにマウントしようとしていませんか(またはその逆)?
-
[解決済み] ドッカーENVとRUNエクスポートの比較
-
[解決済み] Dockerの実行と作成
-
[解決済み] Docker CMDを複数回使用して、複数のサービスを実行することができないのはなぜですか?