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作者地址

相关推荐
linmengmeng_13145 分钟前
【Docker】容器安全之非root用户运行
安全·docker·容器
安 当 加 密1 小时前
安当KSP密钥管理系统:赋能电梯制造与运维全生命周期数据安全
运维·制造
爱喝矿泉水的猛男1 小时前
Windows 11 + Ubuntu 22.04双系统时间同步失败处理
linux·运维·ubuntu·双系统时间不同
rainFFrain1 小时前
动态库和静态库
linux·运维
Мартин.1 小时前
[Meachines] [Easy] Toolbox PostgreSQLI-RCE+Docker逃逸boot2docker权限提升
运维·docker·容器
朝九晚五ฺ2 小时前
【Linux探索学习】第三十二弹——生产消费模型:基于阻塞队列和基于环形队列的两种主要的实现方法
linux·运维·学习
Yuanymoon2 小时前
【由技及道】在wsl容器中进行远程java开发【人工智障AI2077的开发日志003】
java·容器·wsl·spirng
Austindatabases2 小时前
云原生 DB 技术将取代K8S为基础云数据库服务-- 2025年云数据库专栏(一)
数据库·云原生·容器·kubernetes
沧浪之水!3 小时前
Linux:进程替换
linux·运维·服务器
诸神缄默不语3 小时前
Linux纯命令行界面下SVN的简单使用教程
linux·运维·svn