docker 使用通配符组成入口点 cp: cp: 无法 stat /foo/*.txt

docker 使用通配符组成入口点 cp: cp: 无法 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

如何使用通配符在撰写服务中复制文件?

信息:

docker --version
Docker version 20.10.21, build baeda1f

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

答案1

像这样的字符*由 shell 解释,因此您需要调用 shell 来处理它(例如,sh -c 'cp /foo/*.txt /data')。否则,这些参数将被传递给exec,它不知道如何处理*,并且会发生您所描述的错误。

相关内容