docker - 解决 docker 文件中 COPY 命令中的目录路径错误

标签 docker docker-compose dockerfile docker-machine

我在 ubuntu 16.04 之上的 docker 文件中使用 COPY 命令。我收到错误,因为没有这样的文件或目录,即使该目录存在。在下面的 docker 文件中,我想将工作空间目录中存在的目录“auth”复制到 docker 镜像(在路径/home/ubuntu 上),然后构建镜像。

FROM ubuntu:16.04
RUN apt-get update
COPY /home/ubuntu/authentication/workspace   /home/ubuntu
WORKDIR /home/ubuntu/auth

最佳答案

一个 Dockerfile COPY命令只能引用上下文下的文件 - Dockerfile 的当前位置,即 .所以你现在有几个选择:

  • 如果可以在构建之前将/home/ubuntu/authentication/workspace/目录内容复制到项目内部的某个位置(所以现在它将包含在您的 Dockerfile 上下文中,您可以通过 COPY ./path/to/content /home/ubuntu 访问它)它可以是伟大的。但有时你不想要它。
  • 不要复制目录,而是通过卷将其绑定(bind)到您的容器:

  • 运行容器时,添加 -v选项:
    docker run [....] -v /home/ubuntu/authentication/workspace:/home/ubuntu [...]
    

    请注意,卷的设计使您在容器目录(/home/ubuntu)中所做的任何更改都会影响主机端(/home/ubuntu/authentication/workspace)上的绑定(bind)目录,反之亦然。
  • 我发现了一个超过 here 的东西:这个人正在强制 Dockerfile 接受他的上下文——他坐在/home/ubuntu/authentication/workspace/目录中,并在那里运行
    docker build . -f /path/to/Dockerfile

  • 所以现在在他的 Dockerfile 中,他可以将/home/ubuntu/authentication/workspace 作为他的上下文(.)

    关于docker - 解决 docker 文件中 COPY 命令中的目录路径错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55326779/

    相关文章:

    docker - 如何运行一个接受多个用户完整输入的 bash 脚本,作为 dockerfile 的一部分

    docker - 无法启动守护进程 : pid file found, 确保 docker 未运行或删除/var/run/docker.pid

    nginx - 如何使用Docker将ownCloud置于Nginx之后?

    docker - 使用 distroless 基础镜像构建多阶段 docker 镜像会导致 "no such file or directory"错误

    docker - 使用部署为Azure Webapp的单个Docker镜像从Python连接到Blob存储

    amazon-web-services - AWS Elastic Beanstalk的Dockerfile错误;否则,有区别吗?

    docker-compose:在 Jenkins 上找不到命令

    jenkins - 将docker-compose与docker swarm一起使用

    docker - Docker-compose找不到Java

    docker - 如何在jenkins管道中指向docker build命令的具体Dockerfile?