当前位置: 首页 > 知识库问答 >
问题:

linux - dockerfile 如何指定 copy 任意本地路径?

窦国源
2023-08-28

Dockerfile

FROM ubuntu:jammyRUN mkdir -p /home/vobile/opt/python/cpython/python3.11COPY /home/vobile/opt/python/cpython/python3.11/ /home/vobile/opt/python/cpython/python3.11/

运行 docker build -t "ponponon/python3_10" . 报错

╰─➤  make builddocker build -t "ponponon/python3_10" .[+] Building 0.0s (7/7) FINISHED                                                          docker:default => [internal] load build definition from Dockerfile                                                0.0s => => transferring dockerfile: 206B                                                                0.0s => [internal] load .dockerignore                                                                   0.0s => => transferring context: 2B                                                                     0.0s => [internal] load metadata for docker.io/library/ubuntu:jammy                                     0.0s => [1/3] FROM docker.io/library/ubuntu:jammy                                                       0.0s => [internal] load build context                                                                   0.0s => => transferring context: 2B                                                                     0.0s => CACHED [2/3] RUN mkdir -p /home/vobile/opt/python/cpython/python3.11                            0.0s => ERROR [3/3] COPY /home/vobile/opt/python/cpython/python3.11/ /home/vobile/opt/python/cpython/p  0.0s------ > [3/3] COPY /home/vobile/opt/python/cpython/python3.11/ /home/vobile/opt/python/cpython/python3.11/:------Dockerfile:4--------------------   2 |        3 |     RUN mkdir -p /home/vobile/opt/python/cpython/python3.11   4 | >>> COPY /home/vobile/opt/python/cpython/python3.11/ /home/vobile/opt/python/cpython/python3.11/--------------------ERROR: failed to solve: failed to compute cache key: failed to calculate checksum of ref 4719289b-912b-4acb-a45b-0910da94af44::7dqvwnk46nydkd4ygzblhauqc: "/home/vobile/opt/python/cpython/python3.11": not foundmake: *** [Makefile:12: docker-build] Error 1

当前路径是 /home/vobile/disk/docker-compose-public/ubuntu22

dockerfile 的 copy 好像是只能 copy 当前路径下面的东西?

改成 ADD 发现 ADD 只能 add 文件,不能 add 文件夹!!

可恶!怎么办?

我的 dockerfile 在 /home/vobile/disk/docker-compose-public/ubuntu22

但是我想把 /home/vobile/opt/python/cpython/python3.11/ 文件夹下的一切复制到镜像中

共有2个答案

章茂
2023-08-28

不支持COPY任意目录

但支持Copy父级目录的文件,具体可以通过 docker build -f 来指定相对路径;

例如我想在 sample-site/docker/Dockerfile 中 COPY文件 config/nginx.conf

-f 指定被COPY的文件的所在的父级目录即可

$ cd projects$ docker build -f sample-site/docker/Dockerfile -t sample-site:latest .

Dockerfile中的copy 路径为

FROM nginx:latestCOPY config/nginx.conf /etc/nginx/nginx.conf
毕宏盛
2023-08-28

docker 不支持这样操作,copy的文件必要要在构建上下文里面才行

The <src> path must be inside the context of the build; you cannot COPY ../something /something, because the first step of a docker build is to send the context directory (and subdirectories) to the docker daemon.

https://docs.docker.com/engine/reference/builder/#copy

 类似资料:
  • 问题内容: 所有人,我正在尝试将文件从主机持久复制到映像,以便基于该映像启动的每个容器都可以使用这些文件。在debian wheezy 64bit上以virtualbox guest身份运行。 Dockerfile非常简单(安装八度映像): 发出构建命令后,我得到以下跟踪: Docker绝对拒绝将此文件从主机复制到映像中。不用说文件loadjson.m存在(猫显示),我所有更改路径(相对,绝对等)

  • 问题内容: 在提交错误之前,我想请某人确认我最近遇到的奇怪行为。 考虑一下我们有一个简单的Dockerfile,我们试图将一些文件复制到非root用户的主目录中: 这就是我尝试构建此映像时得到的: 好像是空的。但为什么?将绝对路径放置到home目录而不是不是很方便。 问题答案: 这是您的问题: 使用指令时,它会影响用于在容器内启动新命令的用户标识。因此,例如,如果您这样做: 你得到这个: 因为这些

  • 英文原文:http://emberjs.com/guides/routing/specifying-the-location-api/ 默认情况下,路由通过浏览器的哈希来加载应用程序的起始状态,并且你在程序里点来点去的时候也是通过哈希来保持同步的。 目前,这依赖于浏览器中的hashchange事件。 下面的这个路由会将你从/#/posts/new 带到 posts.new 路由中去。 1 2 3

  • 问题内容: 我想在Dockerfile内将文件复制到映像中(如果存在),pip的requirements.txt文件似乎是一个不错的选择,但是如何实现呢? 要么 问题答案: 目前尚不支持此功能(因为我怀疑它会导致图像无法复制,因为相同的Dockerfile会根据文件的存在来复制或不复制该文件)。 在问题13045中,仍要求使用通配符“ ”(2015年5月)。 目前(2015年7月)不会在Docke

  • 问题内容: 我有这个定义: 我正在使用Symfony 1,并且想在上安装它们。我该如何指定? 问题答案: 看来您可以将目录定义为其他内容(在您的情况下): 然后,您可以将包名称重命名为其中没有级别目录,例如: 因此,您应该看起来像这样: 编辑 使用此配置,您将获得路径(这 当然 对symfony不利): 插件/sfGuardPlugin/sfGuardPlugin-4.0.2/ 我发现了一个解决方