忘備録/創作板

忘れないように、誰かの助けになるように

docker runでワイルドカード指定でファイルを渡す方法

1000日ぶりに記事を書きます。

Shellで * 指定でファイルを取得し、docker imageに渡す時に嵌ったので。

結論

docker run -v $(pwd):$(pwd) -w $(pwd) your/image command path/to/file/*

-vと-wオプションで path/to/file/*までのPathをホストと同じにすれば、ワイルドカード指定でファイルを指定できるようになる。

-v, --volume=[ホスト側ソース:]コンテナ側送信先[:<オプション>]
             ボリュームを拘束マウント。カンマ区切りで指定
             `オプション` は [rw|ro], [z|Z], [[r]shared|[r]slave|[r]private], [nocopy]
             'ホスト側ソース' は絶対パスまたは名前の値
-w, --workdir=""   コンテナ内の作業用ディレクトリを指定

-w(ワークスペース)を変更しない場合

docker run -v $(pwd):/test your/image sh -c "command /test/path/to/file/*"

docker image内でワイルドカードを展開すればよい。