实用工具
输入
结果
结果会显示在这里。项目 README 通常从一条 docker run 命令开始,但一旦要跑不止一个容器——Open WebUI 配 Ollama、应用配数据库——compose.yaml 就好维护得多。粘贴一条或多条 docker run 命令,这个工具会用 composerize(composerize.com 背后的开源转换器)逐条转换,再合并成一个 Compose 文件:端口、卷、环境变量、重启策略、额外主机和 GPU 预留都会放到各自服务下正确的键里。
它是怎么工作的
- 每行一条命令,或用 && 连接;反斜杠续行、开头的 $ 提示符、sudo 和 podman run 都能识别。
- 服务以容器的 --name 命名;没有 --name 时用镜像名,重名的会加上 -2 后缀,不会有容器互相覆盖。
- 可以选当前的 Compose 文件格式(没有 version 键),或以 version: 开头的旧版 3.x、2.x 格式,缩进两个或四个空格。
- composerize 写入的占位项目名会被删掉,因为 Compose 会拒绝它;之后 Compose 会以文件所在的文件夹为项目命名。
你的数据去了哪里
哪也没去。本工具完全在你的浏览器里运行:你粘贴的文本由页面处理,不会传输到任何服务器,也不会写进任何日志。
本工具免费且无需登录,运行结果只存在于你当前的页面里,不会被保存到任何地方。
它要花多少
本工具完全免费,不需要登录,也不消耗积分。
常见问题
- 为什么我的命名卷被标成 external: true?
- 因为 docker run 用的命名卷——-v ollama:/root/.ollama——已经存在,里面有你的数据。标成 external,Compose 就会使用这个卷本身;不标的话,Compose 会新建一个带项目名前缀的空卷。文件上方的注释也说明了这一点。如果是全新部署,删掉 external 那几行,Compose 会自己创建卷。
- --gpus all 会转换过去吗?
- 会。它变成 deploy.resources.reservations.devices 下的一项,driver 为 nvidia、count 为 all、带 gpu 能力,这就是 Compose 申请 GPU 的写法;主机上仍需安装 NVIDIA Container Toolkit,与 docker run 时一样。
- 要保留 version: 这一行吗?
- 用当前的 Docker 就不需要。docker compose(v2)实现的 Compose Specification 会忽略 version,并提示它已过时,所以默认格式不写这一行。只有文件要给旧的 docker-compose 1.x 或需要这个键的工具读取时,才选 3.x 或 2.x。
- 有选项没被转换怎么办?
- composerize 能映射大多数 docker run 选项,少数在 Compose 里没有对应项的会被略去。使用前把结果和原命令对照一下,尤其是不常见的参数——另外要记住,镜像名必须写在所有选项之后,docker run 本身也是这样要求的。
背后的开源项目
本工具运行在 composerize/composerize 之上,以 MIT 许可发布。如果你需要在自己的程序里实现同样的能力,直接用这个库。
composerize/composerize也常被称作
- docker run 转 compose
- docker run 转 docker-compose
- composerize
- docker 命令转 yaml
- docker compose 生成
- docker-compose.yml 生成