当前位置: 首页 > news >正文

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

相关文章:

  • 从 ISO 到 GMT+8:Vue 前端时间格式的奇妙之旅!
  • 【Linux操作系统】VM17虚拟机安装Ubuntu22.04,图文详细记录
  • vscode工作区看不清光标
  • 14天 -- Redis 的持久化机制有哪些?Redis 主从复制的实现原理是什么? Redis 数据过期后的删除策略是什么?
  • C语言学习笔记-初阶(27)操作符详解1:位操作
  • Unity 使用NGUI制作无限滑动列表
  • win11/win10+tensorflow2.9.0+cuda11.2.1+cudnn8.1.1
  • leetcode日记(77)子集Ⅱ
  • vue3:初学 vue-router 路由配置
  • 备份docker的数据库文件信息
  • PMP项目管理—资源管理篇—1.规划资源管理
  • 【Python爬虫】爬取公共交通路网数据
  • 大语言模型 智能助手——既能生成自然语言回复,又能在必要时调用外部工具获取实时数据
  • 【零基础到精通Java合集】第二十二集:CMS收集器详解(低延迟的里程碑)
  • 将 MySQL 数据高效导入 Redis
  • JAVA安全—Shiro反序列化CB1链source入口sink执行gadget链
  • Python解决“找出整形数组中占比超过一半的数”问题
  • AI介入软件测试过程可行的环节和帮助机制
  • 科普:“图相似性”与“文本相似性”
  • 【音视频】ffmpeg命令分类查询
  • 搞一个卖东西的网站怎么做/拓客平台有哪些
  • 电商网站建设电话/旺道seo
  • 网站开发的好处/别做网络推广员
  • 创新的成都 网站建设/南京网站设计公司大全
  • 英涛祛斑 网站开发/上海百度
  • 网站建设需求文档模版/宁波seo关键词费用