CodeBuddy 可基于源码结构、自然语言Prompt或已有Dockerfile,自动生成符合生产规范的Dockerfile和docker-compose.yml;支持自动推导技术栈、服务依赖、网络配置、健康检查及持久化策略,并提供CLI、IDE插件和Web UI三种生成方式。
☞☞☞AI 智能聊天, 问答助手, AI 智能搜索, 多模态理解力帮你轻松跨越从0到1的创作门槛☜☜☜

你想为项目快速生成可用的 Dockerfile 和 docker-compose.yml,但手动编写容易漏掉健康检查、网络配置或环境变量注入——CodeBuddy 能根据源码结构、自然语言描述或已有配置,直接输出符合生产规范的 YAML 与 Dockerfile,跳过反复试错过程。
基于项目源码自动推导生成
这个方法适合已有标准构建文件(如 package.json、pom.xml、requirements.txt)且目录结构清晰的项目,无需描述细节,CodeBuddy 自动识别技术栈并生成最小可行配置。
1、在项目根目录终端中执行 codebuddy compose init 启动推导流程。
2、按提示选择主服务类型,例如 Spring Boot 后端、Next.js 前端、PostgreSQL 数据库——选错会导致依赖关系识别失败,【务必对照实际运行时语言和框架选择】。
3、确认服务间调用关系,比如 api-service 显式依赖 db,而 web-service 仅通过 nginx 反向代理访问 api-service;这一步决定生成的 depends_on 和 networks 配置是否准确。
4、输入持久化策略:若选 MySQL,系统会建议将 /var/lib/mysql 挂载为 named volume;若选 Redis,则默认启用 tmpfs 内存卷——不手动指定时,CodeBuddy 会按服务特性预设安全策略。
5、生成后立即检查 docker-compose.yml 中 services 下是否包含全部已识别服务,特别注意 image 字段是否为空——空值说明某服务未被成功识别,需补全对应构建文件再重试。
用自然语言 Prompt 定制生成
当你需要精确控制端口映射、环境变量、健康检查路径或云平台特有字段时,自然语言是最直接的方式。一句话就能声明多服务拓扑与约束条件。
方法一:CLI 输入结构化指令
在终端输入:codebuddy "生成 docker-compose.yml:包含 nginx(端口80→8080)、backend(Go,端口8080)、redis(7.2,密码 redis123)、postgres(15,密码 pg123);所有服务加入名为 app-net 的自定义 bridge 网络;postgres 数据卷命名为 pg-data;backend 添加健康检查:curl -f http://localhost:8080/health"。
方法二:Web IDE 或 CLI 中粘贴 Prompt 后等待返回
CodeBuddy 解析语义后,会输出完整 YAML,其中 healthcheck 字段严格采用 test: ["CMD", "curl", "-f", "http://localhost:8080/health"] 格式,避免 shell 形式导致容器启动失败。
方法三:保存并验证
将返回内容保存为项目根目录下的 docker-compose.yml,然后运行 docker-compose config ——如果报错“invalid interpolation format”,说明 Prompt 中用了未加引号的变量名(如 $DB_HOST),需回到 Prompt 补上单引号。
从已有 Dockerfile 批量合成 docker-compose.yml
你已经写好多个 Dockerfile,分别对应 gateway、auth、user-service 等模块,现在想统一编排成可一键启停的服务组,CodeBuddy 能自动提取镜像名、端口、环境变量并组装成标准 compose 文件。
在 Linux 上通过 Docker 运行 OpenClaw,并使用 Tailscale 实现远程访问。⚠️ 涉及 sudo、Docker、Tailscale和凭证挂载——请先查阅安全章节...
第一步:确保每个 Dockerfile 所在子目录含有效 LABEL 或 EXPOSE 指令
Dockerfile 中必须有 EXPOSE 3000 或 LABEL com.codebuddy.service.name="frontend",否则 CodeBuddy 无法关联服务名与端口。
第二步:执行批量合成命令
在项目根目录运行:codebuddy compose from-dockerfiles --dir ./services,其中 ./services 是存放各服务 Dockerfile 的父目录。
第三步:检查生成结果中的 service name 是否与目录名一致
例如 ./services/auth/Dockerfile 应生成 services: auth: …,若出现 services: dockerfile_1: …,说明该 Dockerfile 缺少 LABEL 声明,需手动补上再重试。
第四步:确认 environment 块是否自动注入了 .env 文件变量
CodeBuddy 默认读取根目录 .env 并将变量注入所有服务,但不会展开 ${VAR} 占位符——这些由 docker-compose 运行时处理,所以生成文件里仍保留原始写法即可。
生成 Dockerfile 的三种实操路径
方法一:CLI 指令直出
在项目根目录执行:codebuddy "生成适用于生产环境的Dockerfile,基于当前 Node.js 项目,使用 node:20-alpine,安装 pnpm,执行 pnpm install && pnpm build,复制 dist 目录到 nginx:alpine 镜像中提供静态服务"。
方法二:PyCharm 插件右键生成
右键项目根目录 → New → File → 命名为 Dockerfile(无扩展名),输入自然语言提示后选中 → 右键 CodeGeeX → Generate Code → Insert;【必须确保右下角 CodeGeeX 图标为绿色且已登录,否则生成为空】。
方法三:VS Code + Web UI 快速生成
打开 CodeGeeX 官网 → “代码生成”页 → 输入需求 → 复制结果 → 新建本地文件 dockerfile-prod → 粘贴保存——这一步操作起来很简单,直接把文本拖进编辑器就行。

















