社区所有版块导航
Python
python开源   Django   Python   DjangoApp   pycharm  
DATA
docker   Elasticsearch  
aigc
aigc   chatgpt  
WEB开发
linux   MongoDB   Redis   DATABASE   NGINX   其他Web框架   web工具   zookeeper   tornado   NoSql   Bootstrap   js   peewee   Git   bottle   IE   MQ   Jquery  
机器学习
机器学习算法  
Python88.com
反馈   公告   社区推广  
产品
短视频  
印度
印度  
Py学习  »  docker

为什么我不能将目录复制到docker容器?

MiyRon • 3 年前 • 440 次点击  

我有自己的目录结构:

+projects
    +project_1
    +project_2

+node
    +container_1
        -Dockerfile

在我的Dockerfile中我复制了 project_1 /var/www/project_1 但不幸的是,它没有被复制:

#Dockerfile

FROM node:17
WORKDIR /var/www/project_1
COPY ../../projects/project_1 /var/www/project_1
RUN npm install
CMD ["npm","run","start:dev"]

错误:

 => ERROR [3/4] COPY ../../projects/project_1 /var/www/project_1                                                                                                                                                                                                               0.0s
------
 > [3/4] COPY ../../projects/project_1 /var/www/project_1:
------
failed to solve: rpc error: code = Unknown desc = failed to compute cache key: "/projects/project_1" not found: not found
Python社区是高质量的Python/Django开发社区
本文地址:http://www.python88.com/topic/129921
 
440 次点击  
文章 [ 2 ]  |  最新文章 3 年前
JRichardsz
Reply   •   1 楼
JRichardsz    3 年前

在编译期间使用外部文件/文件夹

你做不到 因为docker的创作者希望这样做,作为创作者,他们有很好的理由:简单性和安全性。

Docker在构建时将只处理Dockerfile的同一文件夹中的文件或文件夹。

有一些变通方法,比如启动 docker build... 并指定Dockerfile在另一个文件夹中的位置。

查看以下答案以获取更多详细信息:

不要使用外部文件/文件夹

在构建时,您不应该依赖外部文件夹或文件。您必须只需要一个带有一个应用程序源代码的git存储库。这是常见的、广泛使用的,并且与devops兼容。

构建时所需的任何其他依赖性,应由良好的工程部负责:

  • 库:在你的例子中是一个nodejs/npm包 public private
  • docker base image:您可以使用所需的文件/文件夹创建另一个映像,并将其用作继承 FROM acme-base-nodejs 还是在docker multi-stage
gohm'c
Reply   •   2 楼
gohm'c    3 年前

要复制的文件应位于Dockerfile目录内,而不是外部(例如父目录)。

+projects
    +project_1
    +project_2

+node
    +container_1
+Dockerfile  # <-- move your Dockerfile to your project root.

更新Dockerfile中的文件位置:

...
COPY ./projects/project_1 /var/www/project_1
...

在项目根目录下运行时,生成将成功:

docker build -t <my tag> .