Dockershrink 开源的 AI 助手(程序包),可减小应用程序的 Docker 镜像的大小

一、软件介绍

文末提供程序包及源码下载

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)

发展

  1. 克隆此存储库后,在项目的根目录中导航
  2. 运行测试以确保一切正常
复制代码
go test ./...
  1. 更改代码,添加相关测试。
  2. 整理并确保所有测试都通过
复制代码
go mod tidy
go mod vendor
go test ./...

为本地测试而构建

复制代码
# Single binary
goreleaser build --single-target --clean --snapshot

# All binaries
goreleaser release --snapshot --clean

创建新版本

  1. 使用新版本创建 Git 标签
复制代码
git tag -a v0.1.0 -m "Release version 0.1.0"
git push origin v0.1.0
  1. 释放
复制代码
# 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作者地址

相关推荐
乘云数字DATABUFF2 天前
5分钟部署开源APM Databuff:OpenTelemetry全链路追踪入门实战
运维·后端
Patrick_Wilson3 天前
从「改个端口」到 502:Next.js on k8s 的容器端口、Service 映射与 env 覆盖
docker·kubernetes·next.js
Suroy3 天前
DockerView-Go:用 Go 写一个终端 Docker 监控工具,顺便做了个 Web 仪表盘
docker
云恒要逆袭3 天前
运行你的第一个Docker容器
后端·docker·容器
荣--4 天前
一键部署不是为了省时间 —— 它是把"买来的 PaaS"变成"自己的平台"的拐点
运维·zabbix·工程化·一键部署·平台化·边界设计
江华森4 天前
动手实战学 Docker — 从零到集群编排完全指南
运维
宋均浩4 天前
# Docker 镜像瘦身实战:从 1.2G 到 80MB 的五个优化步骤
ci/cd·docker
Avan_菜菜5 天前
FRP 内网穿透完整实战:从 HTTP 映射到 HTTPS 自签代理
运维·nginx·https
程序员老赵5 天前
10 分钟部署 OpenCode:Docker 一键安装,浏览器打开就能用 AI 写代码(附完整命令与排错)
docker·容器·ai编程
WangMingHua1115 天前
LM Studio Docker 部署——本地大模型一键启动
docker