AI知识库

53AI知识库

学习大模型的前沿技术与行业应用场景


Docker 团队正在探索用 AI 生成 Dockerfile
发布日期:2024-09-06 08:39:26 浏览次数: 1644 来源:编程界


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""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+中大型企业

联系我们

售前咨询
186 6662 7370
预约演示
185 8882 0121

微信扫码

与创始人交个朋友

回到顶部

 
扫码咨询