Docker 团队正在探索 AI 的应用[1],本期介绍的主要内容是 AI 生成 Dockerfile 的探讨,文中示例是基于 Node.js 项目。
当我们让 ChatGPT 为你的项目写一个 Dockerfile 时,它会与你进行对话,要求你提供项目的某些详细信息。
如下图所示,因为我这个近期问 ChatGPT Node.js 相关问题多些,因此 ChatGPT 也推断出了是 Node.js 类项目,但如果是需要为一个其它语言的项目写 Dockerfile 呢?
Docker 团队提出,我们也可以为助手配备一个工具,直接从项目中提取这些信息,而不是询问用户。
一种替代方案为:每当助手被要求创建 Dockerfile 时,给它两个高层次的指示:
此外,还为 LLM 提供了两个函数定义[2]:
[
{
"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 (https://www.lianzai.com/) | Powered by Discuz! X3.5 |