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

相关推荐
angushine8 分钟前
鲲鹏服务器部署Kafka2.8.1
运维·服务器
一个网络学徒1 小时前
MGRE综合实验
运维·服务器·网络
C++ 老炮儿的技术栈1 小时前
在 Scintilla 中为 Squirrel 语言设置语法解析器的方法
linux·运维·c++·git·ubuntu·github·visual studio
ldj20202 小时前
Docker的docker-compose类比Spring的ApplicationContext
spring·docker
白鹭2 小时前
基于LNMP架构的分布式个人博客搭建
linux·运维·服务器·网络·分布式·apache
ldj20202 小时前
docker 自定义网桥作用
docker·容器
java叶新东老师2 小时前
k8s常用命令
云原生·容器·kubernetes
java叶新东老师2 小时前
linux 部署 flink 1.15.1 并提交作业
linux·运维·flink
程序员JerrySUN3 小时前
Linux系统架构核心全景详解
linux·运维·系统架构
无敌的牛3 小时前
Linux文件理解,基础IO理解
linux·运维·服务器