【问题标题】:docker isn't able to add local files to containerdocker 无法将本地文件添加到容器
【发布时间】:2021-05-28 05:54:03
【问题描述】:

我的目录结构如下所示:

  • ./7.3/web/Dockerfile
  • ./etc/php/*

所以我在. 目录中执行sudo docker build -t test 7.3/web 并构建容器但在ADD etc/php /usr/local/etc/php 处停止,给我以​​下错误:

ADD failed: file not found in build context or excluded by .dockerignore: stat etc/php: file does not exist

但是,该文件(井目录)确实存在。当我做ls -latr ./etc/php 时,我看到了这个:

total 12
drwxr-xr-x 2 neubert neubert 4096 Jan  3 23:32 conf.d
drwxr-xr-x 4 neubert neubert 4096 Jan  3 23:32 ..
drwxr-xr-x 3 neubert neubert 4096 Jan  3 23:32 .

所以相对于我在etc/php 中运行命令的目录存在。相对于etc/php中Dockerfile所在的目录不存在(../../etc/php)。

有什么想法吗?

【问题讨论】:

    标签: docker dockerfile ubuntu-20.04


    【解决方案1】:

    所以我在.目录并执行 sudo docker build -t test 7/3/web 并构建容器,但停在 ADD etc/php /usr/local/etc/php...

    您提供给docker build (7/3/web) 的参数定义了“构建上下文”。 Docker 只能访问该目录下的文件。

    最简单的解决方案可能是将您的 Dockerfile 移动到顶级目录并从那里调整您的相对路径。

    您没有移动 Dockerfile(正如 Jason 指出的,您可以通过 -f 在任何地方引用它),但这使得目录的组织更加明显。

    【讨论】:

      【解决方案2】:

      您可以像这样使用-f 标志来吃蛋糕:

      docker build -t test -f ./7.3/web/Dockerfile .

      上面运行了指定的Dockerfile,但是使用当前目录作为上下文路径(在文件中作为ADDing和COPYing的基础)。

      在 Docker 网站的非常方便的文档中查看更多详细信息:https://docs.docker.com/engine/reference/commandline/build/#specify-a-dockerfile--f

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2020-04-04
        • 2020-03-08
        • 2021-09-30
        • 1970-01-01
        • 2018-06-01
        • 1970-01-01
        • 2022-10-20
        • 2020-06-12
        相关资源
        最近更新 更多