一、软件介绍
文末提供程序包及源码下载
Dockershrink 是一个 开源的AI 驱动的命令行工具,可帮助您减小 Docker 镜像的大小。它将算法分析的强大功能与生成式 AI 相结合,将最先进的优化应用于您的图像配置 ,Dockershrink 可以自动应用多阶段构建等技术,切换到 Lighter 基础镜像(如 alpine)并运行依赖项检查。目前,该工具仅支持 NodeJS 应用程序。

二、软件特点
- 为新项目生成优化的 Docker 映像定义(Dockerfile 和 .dockerignore)
- 通过包含最佳实践来优化现有映像定义,以避免膨胀。
- 在开发或生产环境中使用容器的每个组织都了解在其基础设施中管理数百甚至数千个臃肿的 Docker 镜像的痛苦。
- 高昂的数据存储和传输成本、较长的构建时间、生产力不足的开发人员 - 我们都见过。
- 对于像Nodejs和Python这样的解释语言来说,这个问题变得更加痛苦和昂贵。用这些语言编写的应用程序需要将解释器及其所有依赖项打包在其容器镜像中,从而显著增加其大小。
- 但并不是每个人都意识到,仅仅通过实施一些基本技术,他们就可以将 1GB 的 Docker 镜像的大小减少到 100 MB!
- (我还制作了一个关于如何执行此作的视频。
- 想象一下存储和数据传输成本的节省,构建时间的减少以及开发人员🤯的生产力提升
- Dockershrink 旨在自动应用高级优化技术,因此工程师不必在上面浪费时间,并且组织仍然可以节省💰
三、安装
Dockershrink 作为独立的二进制文件提供。
您可以从 Releases 页面下载它,也可以使用 Homebrew 来安装它:
$ brew install duaraghav8/tap/dockershrink
用法
导航到 Node.js 项目的根目录并调用 dockershrink:
# To optimize existing Docker-related files
$ dockershrink optimize
# To generate new Docker files
$ export OPENAI_API_KEY=...
$ dockershrink generate
Dockershrink 会创建一个新目录,其中包含它生成的文件。默认情况下,此目录为 dockershrink.out
.
有关命令的详细信息,请运行
$ dockershrink help optimize
$ dockershrink help generate
您还可以使用该 --debug
选项获取 DEBUG 日志。这些在故障排除期间特别有用。
$ dockershrink generate --debug
四、使用 AI 功能
注意
使用 AI 功能对于 "optimize" 是可选的(但强烈建议),对于 "generate" 是必需的。
如果要启用 AI,则必须提供您的 OpenAI API 密钥。
因此,即使 Dockershrink 本身是免费的,使用 openai 也可能会给您带来一些费用。
dockershrink optimize --openai-api-key <your openai api key>
# Alternatively, you can supply the key as an environment variable
export OPENAI_API_KEY=<your openai api key>
dockershrink generate
注意
Dockershrink 不存储您的 OpenAI API 密钥。
因此,每次希望 Dockershrink 使用它时,都必须提供密钥。这是为了避免任何意外费用。
先决条件
- 将此存储库克隆到本地计算机上。
- 确保你的系统上安装了 Golang(至少是 1.23 版)
- 确保您的系统上安装了 Docker,并且 Docker 守护程序正在运行。
- 安装 GoReleaser(至少版本 2.4)
发展
- 克隆此存储库后,在项目的根目录中导航
- 运行测试以确保一切正常
go test ./...
- 更改代码,添加相关测试。
- 整理并确保所有测试都通过
go mod tidy
go mod vendor
go test ./...
为本地测试而构建
# Single binary
goreleaser build --single-target --clean --snapshot
# All binaries
goreleaser release --snapshot --clean
创建新版本
- 使用新版本创建 Git 标签
git tag -a v0.1.0 -m "Release version 0.1.0"
git push origin v0.1.0
- 释放
# Make sure GPG is present on your system and you have a default key which is added to Github.
# set your github access token
export GITHUB_TOKEN="<your GH token>"
goreleaser release --clean
这将在 Releases 下创建一个新版本,并通过 Homebrew 提供它。
五、软件下载
GitHub作者地址:https://github.com/duaraghav8/dockershrink
本文信息均来源与GitHub作者地址