这两天看到一些go语言的视频,其中go语言能一键编译成可执行文件让我很感兴趣

于是就试了一下,发现效果确实不错

像下面这样就能编译成很轻量的二进制可执行文件

$env:GOOS="linux"        # 目标系统: Linux
$env:GOARCH="amd64"      # 目标架构: 64位
$env:CGO_ENABLED="0"     # 静态编译: 无需 C 库依赖

# 编译: 去除调试信息(-s -w)以减小体积,输出为 ha-trajectory
go build -ldflags="-s -w" -o ha-trajectory ./cmd/server

把文件丢进scratch,一个很小的docker镜像就做好了!

FROM scratch
COPY ha-trajectory /ha-trajectory
EXPOSE 8080
ENTRYPOINT ["/ha-trajectory"]

Docker Scratch镜像是一个极简的Docker镜像,它仅包含了Docker容器运行所必需的最小文件系统和执行环境。Scratch镜像不包含任何操作系统和软件包,因此它非常适合用于构建轻量级容器化应用程序。Scratch镜像的使用非常简单,只需要在Dockerfile中指定FROM scratch即可。

拿ai做了一个根据http请求读写数据库的小工具(为了将homeassistant给的经纬度信息持久存储和画路线图),就占用了一点内存,相比别的镜像少多了!