#一、前言
#一、概述
我们知道使用GO开发的应用程序,我们可以打包成二进制文件,然后直接像shell
脚本一样执行即可。因此基于此方式,我们在编辑go项目的Dockerfile时,可以借助多层构建的功能,使最终的镜像体积很小,但是也不影响业务的运行。
#二、GO应用打包介绍
#2.1 直接打包
在项目根目录执行,这将在当前目录下生成一个名为应用程序module
的可执行文件。
#2.2 指定输出文件名
我们如果想要指定打包后的脚本名称,则可以使用-o
参数指定,指定打包后的项目脚本问app
#2.3 交叉编译
Go交叉编译允许你在一个平台上构建适用于其他操作系统和架构的Go可执行文件。这对于在本地构建不同操作系统或架构的二进制文件非常有用。
在 Windows 上构建 Linux 二进制文件
在Linux上构建Windows可执行文件
在MacOS上构建Windows可执行文件
#三、Docker镜像
使用Dockerfile
将Go项目打包为Docker镜像。可以使用多层构建的方式,将Go应用程序编译并放入最终的镜像中。
Dockerfile示例
说明
上面Dockerfile
我们使用了多层构建的方式:
FROM golang:1.20 as builder
阶段一,注意负责应用的依赖下载及打包export GOPROXY=https://goproxy.cn
设置代理,加上GO依赖下载go build -ldflags "-s -w"
指定链接标志以减小打包后可执行文件的大小FROM alpine
阶段二,核心配置COPY --from=builde
从阶段1中复制构建好的应用程序到当前阶段libc6-compat 包
提供了对glibc的兼容支持,可以使用glibc编译的应用程序能够在这些系统上正常运行
Alpine是一个基于musl libc和BusyBox的轻量级Linux发行版相比于传统的GNU C库(glibc),musl libc是另一个C库的实现,它旨在提供更小巧、更快速的运行时环境。
查看构建后镜像大小
可以看到镜像只有不到50M,如果使用原始GO镜像,则会达到上G的大小
推荐本站淘宝优惠价购买喜欢的宝贝:
本文链接:https://hqyman.cn/post/6781.html 非本站原创文章欢迎转载,原创文章需保留本站地址!
休息一下~~