微信扫码
与创始人交个朋友
我要投稿
Docker 团队正在探索 AI 的应用[1],本期介绍的主要内容是 AI 生成 Dockerfile 的探讨,文中示例是基于 Node.js 项目。
当我们让 ChatGPT 为你的项目写一个 Dockerfile 时,它会与你进行对话,要求你提供项目的某些详细信息。
如下图所示,因为我这个近期问 ChatGPT Node.js 相关问题多些,因此 ChatGPT 也推断出了是 Node.js 类项目,但如果是需要为一个其它语言的项目写 Dockerfile 呢?
Docker 团队提出,我们也可以为助手配备一个工具,直接从项目中提取这些信息,而不是询问用户。
一种替代方案为:每当助手被要求创建 Dockerfile 时,给它两个高层次的指示:
此外,还为 LLM 提供了两个函数定义[2]:
[
{
"name": "analyze_project",
"description": "Analyze a project to determine how it should be built"
},
{
"name": "write_files",
"description": "write a set of files to my project",
"parameters": {
"...": "..."
}
}
]
通过这两个功能,助手可以直接在用户的项目中写入 Dockerfile。然而,如果没有最佳实践,实际生成的 Dockerfile 内容可能不会很理想。
为了改善生成的 Dockerfile 内容,Docker 团队提取了一些为 Node.js 项目编写 Dockerfile 的最佳实践。例如,使用 3 个阶段 "deps"
、"build"
、Scout
。
以下为 Docker 团队助手生成的 Dockerfile 内容
# Stage 1 - Downloading dependencies
FROM node:22-slim AS deps # 选择基础镜像时,获取推荐的标签
WORKDIR /usr/src/app
COPY package*.json ./
RUN --mount=type=cache,target=/root/.npm npm ci --omit=dev
# Stage 2 - Building application
FROM deps AS build
RUN --mount=type=cache,target=/root/.npm npm ci && npm build
# Stage 3 - Using a recommended base image from Scout
FROM node: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。
53AI,企业落地应用大模型首选服务商
产品:大模型应用平台+智能体定制开发+落地咨询服务
承诺:先做场景POC验证,看到效果再签署服务协议。零风险落地应用大模型,已交付160+中大型企业
2024-07-11
2024-07-11
2024-07-09
2024-09-18
2024-06-11
2024-07-23
2024-07-20
2024-07-12
2024-07-26
2024-07-23
2024-11-18
2024-11-16
2024-11-16
2024-10-31
2024-10-31
2024-10-27
2024-10-26
2024-10-25