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仅提供参数时使用。
容器启动时的默认进程。
输出
使用此工具的更多方式
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:
- 带有您的镜像和标签的
FROM - 构建时变量
ARG WORKDIR- 运行时变量
ENV(包含空格的值自动被引用) - 系统包
RUN,在Alpine镜像上使用apk add --no-cache,在其他地方使用apt-get install --no-install-recommends(带apt列表清理) - 复制+安装依赖层,与源代码分离以便Docker可以缓存已安装的依赖
COPY . .用于源代码的其余部分- 可选的构建
RUN EXPOSE、可选的非rootUSER、可选的HEALTHCHECK- 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永远不会上传或记录——该工具在您的设备上执行纯文本生成。