Docker cp不会复制到现有目录中,而是始终创建子目录

时间:2020-07-23 03:58:32

标签: docker

我有一个帮助程序外壳程序脚本,可以将大量文件(项目源代码)复制到apache容器(特别是var/www/html目录中。(我不在整个项目中使用主机卷,因为它是一个巨大的空间(Magento 2)。

问题在于,docker cp总是创建一个子目录,而不是将文件复制到该目录中。

脚本的相关部分如下:

SOURCE_DIR=/c/projects/foo/bar # actually pulled from .env file but this is what it comes out to
docker cp $SOURCE_DIR/. $(docker-compose ps -q apache_container|awk '{print $1}'):/var/www/html/

根据Docker文档:https://docs.docker.com/engine/reference/commandline/cp/,逻辑应为:

  • SRC_PATH specifies a directory-检查:/c/projects/foo/bar是目录
    • DEST_PATH exists and is a directory检查:/var/www/html/是容器中的目录
      • SRC_PATH does end with /. (that is: slash followed by dot)检查:$SOURCE_DIR/. = /c/projects/foo/bar/.
        • “将源目录的内容复制到该目录中”-不,不会发生。

预期的行为:将foo / bar目录的内容复制到 var/www/html容器中。

实际行为:在bar中创建了目录var/www/html,所以我最终有了var/www/html/bar及其内容。

这是在Windows 10上使用Docker Desktop(不在WSL中运行)。

我还尝试了各种组合,例如docker cp $SOURCE_DIR/.*,删除斜杠和点,对字符串的路径进行硬编码(而不是使用变量),在/var/www/html/中删除结尾的斜杠,使用相对测试目录等路径。它总是将主机目录复制到容器目录,而不仅仅是主机目录内容。

0 个答案:

没有答案
相关问题