2024-04-15
温故知新
00
请注意,本文编写于 219 天前,最后修改于 219 天前,其中某些信息可能已经过时。

目录

简介
COPY单文件
COPY单文件并重命名
COPY文件夹
层级解构
层级保留
COPY多文件
文件名指定
通配符指定
镜像内文件复制
赞助请求V3

简介

本文用于记录Dockerfile中 COPY 指令的常见用法。

COPY大家可能都知道,是用来将文件复制到容器内的,但是针对不同的文件有不同的用法。

本文目前主要记录了:

  • 单文件复制
  • 文件夹复制
  • 多文件复制
  • 镜像文件复制

COPY单文件

bash
# 将本地 `./docker/nginx/nginx.conf` 复制到镜像 `/var/lib/nginx` 文件夹内,并命名为 `nginx.conf` COPY ./docker/nginx/nginx.conf /var/lib/nginx/nginx.conf # 以下指令有相同效果,指定目标路径并保持文件名不变: COPY ./docker/nginx/nginx.conf /var/lib/nginx/

COPY单文件并重命名

bash
# 将 `./springboot-0.0.1.jar` 复制并重命名为 `springboot.jar`: COPY ./springboot-0.0.1.jar /usr/spring/springboot.jar

COPY文件夹

层级解构

bash
# 将 `./website/dist/` 文件夹内所有文件复制到镜像内的 `/var/lib/nginx/html/website/` 文件夹 COPY ./website/dist/* /var/lib/nginx/html/website/

该指令只会复制所有文件到 /var/lib/nginx/html/website/ 文件夹中,包括 ./website/dist/ 的子文件夹中的文件,但不会包括子文件夹。
./website/dist/ 的子/孙所有文件,都会被复制为 /var/lib/nginx/html/website/ 的子文件。

层级保留

bash
# 将 `./website/dist/` 文件夹内所有文件及文件夹复制到镜像内的 `/var/lib/nginx/html/website/` 文件夹 COPY ./website/dist/. /var/lib/nginx/html/website/

该指令与上面【层级解构】的指令仅有一个符号的区别,那就是将 * 改为了 .

这样复制会保留原有的文件夹层级,所以该种用法更为常见。

COPY多文件

文件名指定

bash
# 将 `nginx.conf` 和 `mime.types` 两个文件复制到镜像内 `/var/lib/nginx/` 文件夹中 COPY ./nginx/nginx.conf ./nginx/mime.types /var/lib/nginx/

多个文件用空格隔开。

通配符指定

bash
# 将以 `.html` 结尾的文件复制到镜像内 `/var/lib/nginx/html/website/` 文件夹中 COPY *.html /var/lib/nginx/html/website/

镜像内文件复制

以上用法介绍的都是将本地文件复制到Docker镜像内,有些复杂的构建过程,可能会使用过程镜像来规范管理构建流程和文件,这时候通常需要用到从过程镜像中复制文件的操作。

下面是一个简单的示例:

bash
# 将一个镜像自定义命名为 `process`,这一般是一个过程镜像 FROM alpine as process # 从本地复制文件 COPY ./docker/nginx/nginx.conf /var/lib/nginx/ # *** 省略操作 *** # 这是一个新的镜像 FROM alpine # 从名为 `process` 的镜像中复制文件 `/var/lib/nginx/nginx.conf` 到当前镜像的 `/app/nginx/` 文件夹中 COPY --from=process /var/lib/nginx/nginx.conf /app/nginx/

以上就是一个简单的、从其他镜像内部复制文件的示例,使用该方式时,一般会用到过程镜像这一技巧,而用到这一技巧时,往往时因为目标镜像的构建过程相对复杂。

简单来讲,该功能与复制本地文件的区别就是多了个参数 --from

希望这篇文章能再日常学习和工作中帮到你!

赞助请求V3

建站因为热爱,生活需要Money,请屏幕前的大佬动动您发财的小手,点击一次以示鼓励,祝您生活愉快!

PS:就目前的访问量,即便每个访客都点一次广告,收入也不足以支付运营成本。如果看不到广告,可能是网络原因或被拦截了,那就算了吧。再次祝您生活愉快~~

如果对你有用的话,可以打赏哦
打赏
ali pay
wechat pay

本文作者:DingDangDog

本文链接:

版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!