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

车工订单网站/信息流优化师需要具备哪些能力

车工订单网站,信息流优化师需要具备哪些能力,宁波自助建网站,做app和网站使用多阶段构建 预计阅读时间: 6分钟 多阶段构建是守护程序和客户端上需要Docker 17.05或更高版本的新功能。多阶段构建对于那些努力优化Dockerfiles同时使其易于阅读和维护的人来说非常有用。 致谢:特别感谢Alex Ellis批准使用他的博客文章 生成器模式…


使用多阶段构建


预计阅读时间:
6分钟

多阶段构建是守护程序和客户端上需要Docker 17.05或更高版本的新功能。多阶段构建对于那些努力优化Dockerfiles同时使其易于阅读和维护的人来说非常有用。

致谢:特别感谢Alex Ellis批准使用他的博客文章 生成器模式与Docker 中的多阶段构建作为以下示例的基础。

在多阶段构建之前

构建图像最具挑战性的一点是保持图像尺寸不变。Dockerfile中的每条指令都为图像添加了一个图层,您需要记住在移动到下一层之前清理任何不需要的工件。为了编写一个真正高效的Dockerfile,传统上需要使用shell技巧和其他逻辑来保持层尽可能小,并确保每个层都具有前一层所需的工件而不是其他任何东西。

实际上,有一个Dockerfile用于开发(包含构建应用程序所需的所有内容),以及用于生产的精简版Dockerfile,它只包含您的应用程序以及运行它所需的内容。这被称为“建造者模式”。维护两个Dockerfiles并不理想。

这里有一个例子Dockerfile.buildDockerfile它遵守上面建造者模式:

Dockerfile.build

FROM golang:1.7.3
WORKDIR /go/src/github.com/alexellis/href-counter/
COPY app.go .
RUN go get -d -v golang.org/x/net/html \&& CGO_ENABLED=0 GOOS=linux go build -a -installsuffix cgo -o app .

请注意,此示例还RUN使用Bash &&运算符人为压缩两个命令,以避免在图像中创建其他图层。这很容易出错并且难以维护。例如,插入另一个命令很容易,忘记使用该\字符继续该行。

Dockerfile

FROM alpine:latest  
RUN apk --no-cache add ca-certificates
WORKDIR /root/
COPY app .
CMD ["./app"]  

build.sh

#!/bin/sh
echo Building alexellis2/href-counter:builddocker build --build-arg https_proxy=$https_proxy --build-arg http_proxy=$http_proxy \  -t alexellis2/href-counter:build . -f Dockerfile.builddocker container create --name extract alexellis2/href-counter:build  
docker container cp extract:/go/src/github.com/alexellis/href-counter/app ./app  
docker container rm -f extractecho Building alexellis2/href-counter:latestdocker build --no-cache -t alexellis2/href-counter:latest .
rm ./app

当您运行build.sh脚本时,它需要构建第一个图像,从中创建容器以复制工件,然后构建第二个图像。这两个图像占用了您的系统空间,并且您app 的本地磁盘上仍然存在工件。

多阶段构建大大简化了这种情况!

使用多阶段构建

对于多阶段构建,您可以FROM在Dockerfile中使用多个语句。每条FROM指令可以使用不同的基础,并且每个指令都开始构建的新阶段。您可以选择性地将工件从一个阶段复制到另一个阶段,从而在最终图像中留下您不想要的所有内容。为了说明这是如何工作的,让我们调整上一节中的Dockerfile以使用多阶段构建。

Dockerfile

FROM golang:1.7.3
WORKDIR /go/src/github.com/alexellis/href-counter/
RUN go get -d -v golang.org/x/net/html  
COPY app.go .
RUN CGO_ENABLED=0 GOOS=linux go build -a -installsuffix cgo -o app .FROM alpine:latest  
RUN apk --no-cache add ca-certificates
WORKDIR /root/
COPY --from=0 /go/src/github.com/alexellis/href-counter/app .
CMD ["./app"]  

您只需要单个Dockerfile。您也不需要单独的构建脚本。只要运行docker build

$ docker build -t alexellis2/href-counter:latest .

最终结果是与以前相同的微小生产图像,复杂性显着降低。您不需要创建任何中间图像,也不需要将任何工件提取到本地系统。

它是如何工作的?第二FROM条指令以alpine:latest图像为基础开始一个新的构建阶段。该COPY --from=0行仅将前一阶段的构建工件复制到此新阶段。Go SDK和任何中间工件都被遗忘,而不是保存在最终图像中。

命名您的构建阶段

默认情况下,阶段未命名,您可以通过整数来引用它们,第一FROM条指令从0开始。但是,您可以通过as <NAME>FROM指令中添加一个来命名您的阶段。此示例通过命名阶段并使用COPY指令中的名称来改进前一个示例。这意味着即使Dockerfile中的指令稍后重新排序,COPY也不会中断。

FROM golang:1.7.3 as builder
WORKDIR /go/src/github.com/alexellis/href-counter/
RUN go get -d -v golang.org/x/net/html  
COPY app.go    .
RUN CGO_ENABLED=0 GOOS=linux go build -a -installsuffix cgo -o app .FROM alpine:latest  
RUN apk --no-cache add ca-certificates
WORKDIR /root/
COPY --from=builder /go/src/github.com/alexellis/href-counter/app .
CMD ["./app"]  

停在特定的构建阶段

构建映像时,不一定需要构建整个Dockerfile,包括每个阶段。您可以指定目标构建阶段。以下命令假定您使用的是前一个Dockerfile但在名为的阶段停止builder

$ docker build --target builder -t alexellis2/href-counter:latest .

一些可能非常强大的场景是:

  • 调试特定的构建阶段
  • 使用debug启用了所有调试符号或工具的production舞台,以及精益阶段
  • 使用testing您的应用程序填充测试数据的阶段,但使用使用实际数据的不同阶段构建生产

使用外部图像作为“舞台”

使用多阶段构建时,您不仅可以从先前在Dockerfile中创建的阶段进行复制。您可以使用该COPY --from指令从单独的映像进行复制,使用本地映像名称,本地或Docker注册表中可用的标记或标记ID。如有必要,Docker客户端会提取图像并从那里复制工件。语法是:

COPY --from=nginx:latest /etc/nginx/nginx.conf /nginx.conf


图像,容器,最佳实践,多阶段,多阶段

http://www.jmfq.cn/news/5153383.html

相关文章:

  • 长沙哪个公司做网站/推手平台哪个靠谱
  • 石家庄网站建设推广公司报价/永久免费的电销外呼系统
  • 深圳做网站推广的公司/北京百度推广电话号码
  • 注册网站的步骤/哪有网页设计公司
  • 深圳网站制作价格/google seo怎么做
  • 天津做网站优化公司/百度加盟
  • 个人什么取消网站备案/实时排名软件
  • 平台网站做数据维护需要多久/百度平台商家客服
  • 中国做b2b最快是哪个网站/网络营销八大职能
  • 疏通下水道网站怎么做/saas建站平台
  • 怎么去除自己做的网站/免费行情软件网站下载
  • 建设项目所在地公共媒体网站/上海今天最新发布会
  • 高端模板建站/基本seo技术在线咨询
  • 龙溪网站建设企业/百度的营销策略
  • 哪些网站的简历做的比较好/西安seo建站
  • 专业做鞋子的网站有哪些/抖音seo
  • 苏州seo营销/如何优化培训体系
  • 有没有做高仿的网站/seo软文推广工具
  • 重庆网站建设网络推广/搜索词热度查询
  • 密云区住房城乡建设委官方网站/推广策划
  • 为女朋友做的表白网站/宁波seo公司推荐
  • 兼职做网站这样的网站/b站黄页推广软件
  • 昆山网站建设哪家好/手机百度网址大全首页
  • 我本沉默传奇新开网站/今日国际新闻最新消息事件
  • 专业的培训网站建设/软文营销定义
  • 郑州网站设计/十八大禁用黄app入口
  • 日本最新消息/上海百度提升优化
  • 百度网站置顶怎么做/衡阳seo快速排名
  • 政府网站html源码/免费新闻源发布平台
  • 聊城百度做网站的/谷歌seo招聘