跳到主要内容

Dockerfile生成器

从结构化输入生成生产就绪的Dockerfile——选择基础堆栈(Node、Python、Go、Java、Ruby、PHP、Rust、.NET、Nginx或自定义镜像),然后设置WORKDIR、构建ARG、环境变量、系统包、依赖安装、构建命令、暴露端口、非root用户、HEALTHCHECK和Exec或Shell形式的ENTRYPOINT/CMD。完全在浏览器中运行。

输入

附加在镜像名称后的标签(image:TAG)。

构建时变量。每行都会变成ARG指令。

运行时变量。每行都会变成ENV指令。

根据基础镜像通过apk/apt-get安装。留空跳过。

首先复制以便更好的Docker层缓存。

在依赖文件被复制后运行。

可选。在完整源代码被复制后运行。

逗号分隔的TCP端口。

可选。设置运行时的USER。

可选。在容器内运行的shell命令。

Exec形式是JSON数组,不在shell中运行;Shell形式按原样使用。

可选。当CMD仅提供参数时使用。

容器启动时的默认进程。

输出

生成的Dockerfile
 
这对您有帮助吗?

使用此工具的更多方式

REST API

curl -X POST https://api.iotools.cloud/v1/tool/dockerfile-generator \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "stack": "node",
    "imageTag": "20-alpine",
    "workdir": "/app",
    "envVars": "NODE_ENV=production",
    "depFiles": "package.json package-lock.json",
    "installDeps": "npm ci --omit=dev",
    "exposePorts": "3000",
    "runUser": "node",
    "cmdForm": "exec",
    "cmdValue": "node server.js"
  }'

替换成您账户中的密钥。工具的字段即为请求体——没有额外包装。

让 AI 代理执行

Use the IOTools `dockerfile-generator` tool (Dockerfile Generator) on this input:

YOUR_INPUT_HERE

将此粘贴给任何已连接 IOTools MCP 服务器的代理,再加上您的输入内容。

嵌入式小组件

<iframe
  src="https://iotools.cloud/embed/dockerfile-generator/"
  width="100%" height="520" frameborder="0" scrolling="no" loading="lazy"
  title="Dockerfile生成器 — iotools.cloud"
  sandbox="allow-scripts allow-forms allow-same-origin allow-downloads allow-popups allow-popups-to-escape-sandbox"
  allow="clipboard-write"
  style="width:100%;border:1px solid #e5e7eb;border-radius:12px;overflow:hidden"></iframe>
<script src="https://iotools.cloud/embed.js" async></script>

把它放到您自己的页面上——免费,无需密钥,只需保留一个反向链接。

每次 API/MCP 调用费用5 积分起
需要更多积分?查看定价

也可通过

使用指南

Dockerfile生成器从几个结构化字段生成干净的、生产就绪的Dockerfile,而不是记住指令顺序和最佳实践。选择基础堆栈,填写应用如何安装和启动,然后复制结果——没有Docker守护程序,没有上传,没有任何东西离开您的浏览器。

它做什么

您选择一个基础堆栈(Node.js、Python、Go、Java、Ruby、PHP、Rust、.NET、Nginx、Alpine、Ubuntu、Debian或完整的自定义镜像引用),工具以传统的、缓存友好的顺序组装单阶段Dockerfile:

  1. 带有您的镜像和标签的FROM
  2. 构建时变量ARG
  3. WORKDIR
  4. 运行时变量ENV(包含空格的值自动被引用)
  5. 系统包RUN,在Alpine镜像上使用apk add --no-cache,在其他地方使用apt-get install --no-install-recommends(带apt列表清理)
  6. 复制+安装依赖层,与源代码分离以便Docker可以缓存已安装的依赖
  7. COPY . .用于源代码的其余部分
  8. 可选的构建RUN
  9. EXPOSE、可选的非rootUSER、可选的HEALTHCHECK
  10. Exec形式(JSON数组,推荐)或Shell形式的ENTRYPOINT和/或CMD

如何使用

选择您的堆栈,然后调整标签和安装/构建命令以匹配您的项目。依赖文件在您的完整源代码之前被复制是有意的:只要您的锁定文件保持不变,Docker就会重新使用缓存的安装层,重建会很快。将任何可选字段留空以省略该指令。当您对预览感到满意时,使用复制或下载将其保存为项目根目录中的Dockerfile。

Exec形式 vs Shell形式

Exec形式(CMD ["node", "server.js"])直接将您的进程作为PID 1运行,因此它接收SIGTERM等信号并干净地关闭——这就是它被推荐的原因。Shell形式(CMD node server.js)将命令包装在/bin/sh -c中,当您需要shell功能(如变量扩展或&&)时很方便,代价是shell位于运行时和您的进程之间。

为什么需要非root用户?

将USER设置为非root帐户会在容器受到影响时限制爆炸半径。许多官方镜像(如node)都带有现成的无特权用户。如果您的基础镜像没有合适的用户,则将该字段留空。

它支持多阶段构建吗?

不——此工具生成单阶段Dockerfile,涵盖最常见的情况。对于编译语言,您仍然可以添加构建命令;对于较精简的最终镜像,您可以手动编辑输出为多阶段构建。

这是有效的、可构建的Dockerfile吗?

它遵循Docker官方语法和广泛使用的约定,但命令(安装、构建、启动)必须与您的实际项目匹配。将输出视为强大的起点,并根据需要进行调整。

隐私

一切都在您的浏览器中本地运行。您的镜像名称、环境变量、命令和生成的Dockerfile永远不会上传或记录——该工具在您的设备上执行纯文本生成。

dockerdockerfilecontainerdevopsci/cdimage

喜欢这些工具?去掉广告吧。

一次性付款即可永久移除您账户中的所有广告。无需订阅,不追踪。