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

Dockerfile

FROM ubuntu:jammy

RUN mkdir -p /home/ponponon/opt/python/cpython/python3.11
COPY /home/ponponon/opt/python/cpython/python3.11/ /home/ponponon/opt/python/cpython/python3.11/

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

╰─➤  make build
docker 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/ponponon/opt/python/cpython/python3.11                            0.0s
 => ERROR [3/3] COPY /home/ponponon/opt/python/cpython/python3.11/ /home/ponponon/opt/python/cpython/p  0.0s
------
 > [3/3] COPY /home/ponponon/opt/python/cpython/python3.11/ /home/ponponon/opt/python/cpython/python3.11/:
------
Dockerfile:4
--------------------
   2 |     
   3 |     RUN mkdir -p /home/ponponon/opt/python/cpython/python3.11
   4 | >>> COPY /home/ponponon/opt/python/cpython/python3.11/ /home/ponponon/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/ponponon/opt/python/cpython/python3.11": not found
make: *** [Makefile:12: docker-build] Error 1

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

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

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

可恶!怎么办?

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

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

阅读 4.3k
2 个回答

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

不支持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:latest
COPY config/nginx.conf /etc/nginx/nginx.conf
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题