返回顶部
热门问答 更多热门问答
技术文章 更多技术文章

Docker 团队正在探索用 AI 生成 Dockerfile

[复制链接]
链载Ai 显示全部楼层 发表于 3 小时前 |阅读模式 打印 上一主题 下一主题

Docker 团队正在探索 AI 的应用[1],本期介绍的主要内容是 AI 生成 Dockerfile 的探讨,文中示例是基于 Node.js 项目。

当我们让 ChatGPT 为你的项目写一个 Dockerfile 时,它会与你进行对话,要求你提供项目的某些详细信息。

如下图所示,因为我这个近期问 ChatGPT Node.js 相关问题多些,因此 ChatGPT 也推断出了是 Node.js 类项目,但如果是需要为一个其它语言的项目写 Dockerfile 呢?

Docker 团队提出,我们也可以为助手配备一个工具,直接从项目中提取这些信息,而不是询问用户

一种替代方案为:每当助手被要求创建 Dockerfile 时,给它两个高层次的指示:

  • 分析项目以确定其构建方式
  • 分析完成后,创建一个 Dockerfile 来构建该项目

此外,还为 LLM 提供了两个函数定义[2]

  • analyze_project:分析项目以确定其构建方式。
  • write_files:将一组文件写入我的项目。
[
{
"name":"analyze_project",
"description":"Analyzeaprojecttodeterminehowitshouldbebuilt"
},
{
"name":"write_files",
"description":"writeasetoffilestomyproject",
"parameters":{
"...":"..."
}
}
]

通过这两个功能,助手可以直接在用户的项目中写入 Dockerfile。然而,如果没有最佳实践,实际生成的 Dockerfile 内容可能不会很理想。

为了改善生成的 Dockerfile 内容,Docker 团队提取了一些为 Node.js 项目编写 Dockerfile 的最佳实践。例如,使用 3 个阶段 "deps""build"Scout

以下为 Docker 团队助手生成的 Dockerfile 内容

#Stage1-Downloadingdependencies
FROMnode:22-slimASdeps#选择基础镜像时,获取推荐的标签
WORKDIR/usr/src/app
COPYpackage*.json./
RUN--mount=type=cache,target=/root/.npmnpmci--omit=dev

#Stage2-Buildingapplication
FROMdepsASbuild
RUN--mount=type=cache,target=/root/.npmnpmci&&npmbuild

#Stage3-UsingarecommendedbaseimagefromScout
FROMnode:22-slim
WORKDIR/usr/src/app
COPY--from=deps/usr/src/app/node_modules./node_modules
COPY--from=build/usr/src/app/dist./dist
CMD["npm","start"]

AI 时代,大家都在探索相关的应用场景。Docker 团队也在探索让生成式 AI 助手提高生成 Dockerfile 内容的能力,期待这个小助手能早日来临,实现根据项目自动分析来生成一份最佳实践的 Dockerfile。

回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

链载AI是专业的生成式人工智能教程平台。提供Stable Diffusion、Midjourney AI绘画教程,Suno AI音乐生成指南,以及Runway、Pika等AI视频制作与动画生成实战案例。从提示词编写到参数调整,手把手助您从入门到精通。
  • 官方手机版

  • 微信公众号

  • 商务合作

  • Powered by Discuz! X3.5 | Copyright © 2025-2025. | 链载Ai
  • 桂ICP备2024021734号 | 营业执照 | |广西笔趣文化传媒有限公司|| QQ