Dockerfileです。RUN 命令を変数に出力する
2023-09-07 23:53:10
質問
dockerfileを書いていて、以下のように"ls"コマンドの出力を変数に入れたいと考えています。
$file = ls /tmp/dir
ここで、"dir"には、1つのファイルしか入っていません。
dockerfile内の以下のRUN命令がうまくいきません。
RUN $file = ls /tmp/dir
どのように解決するのですか?
変数を保存しておいて、後で他の変数で使用することはできません。
Dockerfile
コマンドで使用するために変数を保存することはできません (それがあなたの意図であれば)。これは、それぞれの
RUN
は新しいシェルで起こるからです。
しかし、単に
ls
の出力をキャプチャするだけなら、一つの
RUN
の複合コマンドでできるはずです。例えば
RUN file="$(ls -1 /tmp/dir)" && echo $file
サブシェルだけをインラインで使うことも
RUN echo $(ls -1 /tmp/dir)
これがあなたの理解の助けになることを願っています。もしあなたが実際にエラーや問題を解決したいのであれば、仮定的な答えではなく、これを拡大解釈することができます。
完全な例
Dockerfile
を示すと、次のようになります。
FROM alpine:3.7
RUN mkdir -p /tmp/dir && touch /tmp/dir/file1 /tmp//dir/file2
RUN file="$(ls -1 /tmp/dir)" && echo $file
RUN echo $(ls -1 /tmp/dir)
ビルドすると、ステップ 3 と 4 で変数 (この変数には
file1
と
file2
をステップ2)で作成します。
$ docker build --no-cache -t test .
Sending build context to Docker daemon 2.048kB
Step 1/4 : FROM alpine:3.7
---> 3fd9065eaf02
Step 2/4 : RUN mkdir -p /tmp/dir && touch /tmp/dir/file1 /tmp//dir/file2
---> Running in abb2fe683e82
Removing intermediate container abb2fe683e82
---> 2f6dfca9385c
Step 3/4 : RUN file="$(ls -1 /tmp/dir)" && echo $file
---> Running in 060a285e3d8a
file1 file2
Removing intermediate container 060a285e3d8a
---> 2e4cc2873b8c
Step 4/4 : RUN echo $(ls -1 /tmp/dir)
---> Running in 528fc5d6c721
file1 file2
Removing intermediate container 528fc5d6c721
---> 1be7c54e1f29
Successfully built 1be7c54e1f29
Successfully tagged test:latest
関連
-
[解決済み】エラー "入力デバイスはTTYではありません"
-
[解決済み】Dockerのビルドコンテキスト外のファイルをインクルードする方法とは?
-
[解決済み] Dockerfileの'COPY'と'ADD'コマンドの違いは何ですか?
-
[解決済み] DockerfileのCMDとENTRYPOINTの違いは何ですか?
-
[解決済み] Dockerコンテナのシェルに入るにはどうしたらいいですか?
-
[解決済み] DockerfileのRUNとCMDの違いについて
-
[解決済み] Dockerコンテナにユーザーを追加する方法は?
-
[解決済み】Dockerfileで環境変数の値を取得する
-
[解決済み] kubernetesのPodsでイメージのプルを再試行する方法は?
-
[解決済み] docker-compose.yml を使ってコンテナを自動削除する
最新
-
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 buildでコマンドの出力が表示されないのはなぜですか?
-
[解決済み】Dockerコンテナのファイルシステムを調査する
-
[解決済み] テストが見つかりません。インストールされているテストのディスカバラーとエグゼキューター、プラットフォームとフレームワークのバージョン設定が適切であることを確認し、もう一度試してみてください。
-
[解決済み] Dockerfileに複数行のコマンドを改行を維持したまま記述する方法とは?
-
[解決済み] Dockerの実行と作成
-
[解決済み] すべてのdockerボリュームを削除するには?
-
[解決済み] ホストからコンテナ名でDockerコンテナにアクセスする
-
[解決済み] docker attach と docker exec の違い
-
[解決済み] Dockerfileは他のDockerfileを拡張することができますか?
-
[解決済み] docker compose に引数を渡す