当前位置: 首页 > wzjs >正文

北京有哪些网站建设公司如何对一个网站进行seo

北京有哪些网站建设公司,如何对一个网站进行seo,做外贸必须用的社交网站,怎么做网站埋点在 Dockerfile 中,COPY 和 ADD 都是用来将文件从主机复制到 Docker 镜像中的指令。它们有些相似,但在功能上有一些关键的区别。 单阶段构建 1. 基本区别: COPY:简单地将文件或目录从主机系统复制到容器的指定路径,不…

在 Dockerfile 中,COPYADD 都是用来将文件从主机复制到 Docker 镜像中的指令。它们有些相似,但在功能上有一些关键的区别。

单阶段构建

1. 基本区别

  • COPY:简单地将文件或目录从主机系统复制到容器的指定路径,不做任何额外的处理。

  • ADD:除了执行与 COPY 相同的操作外,还能处理一些额外的功能:

    • 支持从 URL 下载文件并复制到容器中。
    • 支持自动解压 .tar 格式的压缩包(如 .tar.gz.tar.bz2 等)。

2. 理解与逻辑

  • COPY 用于最基础的文件拷贝操作,语法简单,行为明确,通常在我们不需要额外处理(如解压文件或从远程服务器下载文件)的情况下使用。

  • ADD 提供了更多的功能(如下载和解压),但由于其具有自动处理压缩文件的功能,有时会增加不必要的复杂性。比如,如果我们不需要解压 .tar 文件,使用 ADD 可能会带来一些不期望的行为。因此,推荐使用 COPY,只有在需要解压文件或从网络下载时,才使用 ADD

3. 使用场景对比

特性COPYADD
基本功能将文件从主机复制到镜像中将文件从主机复制到镜像中
支持解压不支持解压文件支持自动解压 .tar 文件
支持 URL只支持本地路径支持从 URL 下载文件并复制
推荐使用场景仅复制文件或目录,没有额外需求需要解压 .tar 文件或从 URL 下载文件
语法COPY <src> <dest>ADD <src> <dest>

4. 举例说明

示例 1:使用 COPY 复制文件
COPY ./myfile.txt /app/myfile.txt

这将把主机上的 myfile.txt 文件复制到容器中的 /app/ 目录。

示例 2:使用 ADD 复制文件并解压
ADD ./myarchive.tar.gz /app/

这将把 myarchive.tar.gz 文件复制到 /app/ 目录,并自动解压它。假如 myarchive.tar.gz 中包含多个文件,ADD 会自动将这些文件解压到 /app/ 目录中。

示例 3:使用 ADD 从 URL 下载文件
ADD http://example.com/file.tar.gz /app/

这将从 http://example.com/file.tar.gz 下载文件,并将其复制到 /app/ 目录中,同时也会解压文件。

总结:

  • COPY 是最基础的文件复制操作,语义明确,推荐用于文件复制。
  • ADD 除了复制文件外,支持自动解压和从 URL 下载,但增加了不必要的复杂性,除非有解压或下载需求,否则优先使用 COPY

多阶段构建

多阶段构建(multi-stage builds) 中,COPY 可以从一个阶段复制文件到另一个阶段。

如何使用 COPY 在不同阶段之间传递文件

在多阶段构建中,COPY 可以通过指定源镜像的名称来从一个构建阶段复制文件到另一个阶段。

语法

COPY --from=<stage_name_or_index> <src_path> <dest_path>
  • --from=<stage_name_or_index>:指定从哪个构建阶段复制文件。如果是第一个阶段,可以使用 0,如果是多个阶段中的其他阶段,可以使用阶段的名称或索引。
  • <src_path>:源路径,表示要复制的文件或目录。
  • <dest_path>:目标路径,表示复制到容器中的位置。

示例:多阶段构建中的 COPY 使用

假设你有一个 Node.js 项目,首先需要编译和构建文件,然后在最终的镜像中仅包含构建后的产物(比如构建出来的静态文件或编译后的代码)。

# 第一阶段:构建阶段
FROM node:16 AS builder
WORKDIR /app
COPY . .
RUN npm install && npm run build# 第二阶段:最终镜像
FROM nginx:alpine 
# 从构建阶段复制编译好的静态文件到 Nginx 服务器的默认目录COPY --from=builder /app/build /usr/share/nginx/html # 暴露端口EXPOSE 80 

解释

  • 在第一阶段,我们使用 node:16 镜像构建项目,执行 npm installnpm run build

  • 在第二阶段,我们使用 nginx:alpine 镜像来部署构建后的静态文件。通过 COPY --from=builder /app/build /usr/share/nginx/html,我们从名为 builder 的第一阶段中复制 /app/build 目录到 Nginx 的默认静态文件目录 /usr/share/nginx/html

为什么使用多阶段构建?

  • 减小镜像大小:你可以只将构建过程中需要的文件复制到最终镜像中,避免将临时的构建工具和中间文件包含在内,从而减小最终镜像的体积。

  • 清晰的分层管理:将不同的构建步骤分开,可以更清晰地管理每个构建步骤的依赖。

dockerfile演示

FROM quay.io/0voice/node:18.16.0 as stage0
RUN npm config set registry https://mirrors.huaweicloud.com/repository/npm/
COPY ./user-web /src/user-web
WORKDIR /src/user-web
RUN npm install
RUN npm run buildFROM quay.io/0voice/golang:1.20 as stage1
RUN go env -w GOPROXY=https://goproxy.cn,https://proxy.golang.com.cn,direct
ADD ./user /src/user
WORKDIR /src/user
RUN CGO_ENABLED=0 GOOS=linux GOARCH=amd64 go build -o user .FROM quay.io/0voice/alpine:3.18 as stage2
ADD ./curl-amd64 /usr/bin/curl
RUN chmod +x /usr/bin/curl
WORKDIR /app
ADD ./user/dev.config.yaml /app/config.yaml
COPY --from=stage0 /src/user-web/dist /app/www
COPY --from=stage1 /src/user/user /app
ENTRYPOINT ["./user"]
CMD ["--config=config.yaml"]

https://github.com/0voice

http://www.dtcms.com/wzjs/56356.html

相关文章:

  • 宁波专业网站营销网络营销的基本特征
  • 自己做app建网站推广用哪个平台效果好
  • 明年做那个网站致富南宁seo计费管理
  • 宝塔本地使用wordpress网络推广优化服务
  • 外国人做的古文字网站好视通视频会议app下载安装
  • 网站建设公司前十名快速收录域名
  • 花卉网站建设规划书注册一个网站
  • 站长工具5118百度一下知道首页
  • 做网站分为哪些功能的网站网络营销项目策划方案
  • iis wordpress固定链接404seo公司seo教程
  • 网站建设技术方案怎么写厦门seo外包公司
  • 定制b2b网站谷歌搜索引擎免费入口镜像
  • h5制作公司排名优化课程
  • 进国企但是签的是外包seo全网推广
  • 网站设计配色方案中国搜索
  • 山药云搭建网站网站排行榜查询
  • 宁波网站制作工作室合肥网站关键词优化公司
  • 个人网站的建设流程百度助手官网
  • 做国际生意的网站有哪些百度快速收录权限域名
  • 建电子商务网站需要多少钱最近热搜新闻事件
  • 外贸网站推广计划书上海网络推广需要多少
  • 网站风格类型东莞网络推广排名
  • 域名注册好了怎么做网站百度一下首页百度
  • 江门网站快速排名加拿大搜索引擎
  • tag改为静态wordpress百度移动seo首选帝搜软件
  • 那个网站做排列五头比较准大数据智能营销
  • wordpress主题出错修改主题深圳seo优化服务
  • 做网站流量怎么解决武汉seo优
  • html5移动网站开发实践网站快速收录软件
  • 工作室 网站建设百度搜索网站优化