云海的博客
首页
  • 接口
  • 数组
  • slice
  • map
  • 指针
  • 反射
  • Context
  • sync.map
  • 锁
  • 类型和类型指针分析
  • recover
  • 从零实现RPC框架
  • make和new区别
  • channel
  • sync.Once
  • sync.Pool
  • protobuf
  • MongoDB pkg源码-findone
  • MyBatis
  • Maven
  • 解析Laravel框架—路由处理
  • PHP(客户端)与 Golang(服务端)使用grpc+protobuf 通信
  • JAVA(客户端)与 Golang(服务端) 使用grpc+protobuf通信
  • Docker使用笔记-常用命令
  • Docker使用笔记-容器间通讯
  • Docker使用笔记-搭建Redis集群
  • Docker使用笔记-镜像多阶段构建
  • Kubernetes部署golang服务
  • Linux常用命令
  • Docker安装Prometheus与Grafana
  • Protobuf
  • TCP抓包
  • 概述-《TCP/IP详解》读书笔记
  • 索引
  • 事务隔离级别
  • 常识
  • 每日一题(1)
  • 每日一题(2)
  • 每日一题(3)
  • 每日一题(4)
关于
GitHub (opens new window)

云海

服务端研发
首页
  • 接口
  • 数组
  • slice
  • map
  • 指针
  • 反射
  • Context
  • sync.map
  • 锁
  • 类型和类型指针分析
  • recover
  • 从零实现RPC框架
  • make和new区别
  • channel
  • sync.Once
  • sync.Pool
  • protobuf
  • MongoDB pkg源码-findone
  • MyBatis
  • Maven
  • 解析Laravel框架—路由处理
  • PHP(客户端)与 Golang(服务端)使用grpc+protobuf 通信
  • JAVA(客户端)与 Golang(服务端) 使用grpc+protobuf通信
  • Docker使用笔记-常用命令
  • Docker使用笔记-容器间通讯
  • Docker使用笔记-搭建Redis集群
  • Docker使用笔记-镜像多阶段构建
  • Kubernetes部署golang服务
  • Linux常用命令
  • Docker安装Prometheus与Grafana
  • Protobuf
  • TCP抓包
  • 概述-《TCP/IP详解》读书笔记
  • 索引
  • 事务隔离级别
  • 常识
  • 每日一题(1)
  • 每日一题(2)
  • 每日一题(3)
  • 每日一题(4)
关于
GitHub (opens new window)
  • Docker使用笔记-常用命令
  • Docker使用笔记-镜像多阶段构建
    • Docker使用笔记-搭建Redis集群
    • Docker使用笔记-容器间通讯
    • Kubernetes部署golang服务
    • Linux命令
    • 网关浅析
    • Nginx配置
    • Protobuf
    • Docker安装Prometheus与Grafana
    • EFK日志收集系统单机版
    • 微服务
    云海
    2021-07-07
    目录

    Docker使用笔记-镜像多阶段构建

    # 概述

    多阶段构建,解决如下痛点问题:

    • 镜像层次多,镜像体积较大,部署时间长
    • 源代码存在泄漏的风险

    如下例子是多阶段构建示例:

    FROM golang:alpine AS builder
    
    WORKDIR /build
    
    ADD go.mod .
    COPY . .
    RUN go build -o hello hello.go
    
    
    FROM alpine
    
    WORKDIR /build
    COPY --from=builder /build/hello /build/hello
    
    CMD ["./hello"]
    
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15

    # 只构建某一阶段的镜像

    可以使用as来为某一阶段命名,例如

    FROM golang:alpine as builder
    
    1

    当我们只想构建builder 阶段的镜像时,增加--target=builder

    docker build --target builder -t username/imagename:tag
    
    1

    # 构建时从其它镜像复制文件

    COPY --from=nginx:latest /etc/nginx/nginx.conf /nginx.conf
    
    1
    上次更新: 2023/01/11
    Docker使用笔记-常用命令
    Docker使用笔记-搭建Redis集群

    ← Docker使用笔记-常用命令 Docker使用笔记-搭建Redis集群→

    最近更新
    01
    函数
    04-11
    02
    面试题
    04-11
    03
    EFK日志收集系统单机版
    08-18
    更多文章>
    Theme by Vdoing | Copyright © 2022-2025 Evan Xu | MIT License
    • 跟随系统
    • 浅色模式
    • 深色模式
    • 阅读模式