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
それをどのように処理するかわからず、*
説明するエラーが発生します。