dockerはワイルドカードを使用してエントリポイントを形成します。 cp: cp: can stat /foo/*.txt

dockerはワイルドカードを使用してエントリポイントを形成します。 cp: cp: can stat /foo/*.txt

docker-compose.ymlファイルには、ホストシステムがファイルを検索できるようにファイルをバインドマウントにコピーする必要があるエントリポイントがあります。

version: '3.9'

services:
  my-service:
  ....
  entrypoint: cp /foo/*.txt /data
  volumes:
    - ./data:/data

ただし、このコンテナを実行するたびに、ログには次のものが表示されますcp: cannot stat '/foo/*.txt': No such file or directory。一方、フルファイル名を入力すると正常に動作します。

私も試しましたが、entrypoint: ['cp', '/foo/*.txt', '/data']同じエラーが発生しました。

引用:https://docs.docker.com/engine/reference/builder/#understand-how-cmd-and-entrypoint-interact

ワイルドカードを使用してComposeサービスからファイルをコピーする方法は?

情報:

docker --version
Docker version 20.10.21, build baeda1f

cat /etc/lsb-release | grep DESCRIPTION
DISTRIB_DESCRIPTION="Ubuntu 22.04.1 LTS"

ベストアンサー1

このような文字は*シェルで解釈されるため、これを処理するにはシェルを呼び出す必要があります(例sh -c 'cp /foo/*.txt /data':)。そうしないと、これらの引数が に渡され、execそれをどのように処理するかわからず、*説明するエラーが発生します。

おすすめ記事