如何检查文件是否存在于docker容器中,然后复制它

8yoxcaq7  于 2023-03-29  发布在  Docker
关注(0)|答案(2)|浏览(150)

我使用docker cp将运行容器中的文件复制到主机服务器(其中包含运行的docker容器),如下所示:

docker cp $containerId:/tmp/allure-results $WORKSPACE/allure

这显然只在文件存在的情况下才起作用,但有时在创建文件之前会有一个延迟。我如何确保文件存在,然后复制它,如果不存在,则等待直到它存在,cp应该发生。类似于以下内容:

if allure exits then 
 docker cp $containerId:/tmp/allure-results $WORKSPACE/allure
else
 wait for 5 second and check again

有可能吗?

u7up0aaq

u7up0aaq1#

您可以使用以下内容:

docker exec -it $containerId test -f /tmp/allure-results

如果文件存在,则返回$?,如果文件不存在,则返回1。

ej83mcc0

ej83mcc02#

我不得不使用sh -c来实现这一点,并确保在bash中使用双引号而不是单引号来替换变量名:

$1=filename
docker exec -it container_id sh -c "test -f /path/to/$1"
file_exists=$?
if [ $file_exists -eq 0 ]; then
  echo "Copying file"
  docker cp container_id:/path/to/$1 ./$1
fi

相关问题