docker run 转 Compose
docker run to Compose
把一行 docker run 命令变成 compose 服务定义,也能反着转回去。
把一条 `docker run` 命令行转换成对应的 `compose.yaml` 服务。命令按真正的 shell 引用规则拆分,所以写成 `sh -c "…"` 的入口点连同空格和引号完好地保留下来。
docker run 命令
compose.yaml
说明
- -d 只影响 docker run 这一次调用本身;Compose 里没有对应项,所以丢掉了。
sh -c "…" 这样的入口点连空格一起保住了。Compose 里没有对应项的标志(--rm, -d)会带一条说明丢掉——生命周期由 Compose 自己决定——不认识的标志一定会点名,绝不悄悄吃掉。输出里的端口加了引号,否则 YAML 1.1 会把 8080:80 读成一个 60 进制的数。怎么用
粘贴命令
续行符、带引号的值,以及镜像后面跟的命令都能处理。什么都不会执行——文本进,文本出。
读输出下方的说明
没有 Compose 对应项的标志会列出来而不是悄悄丢掉,不认识的标志会点名。提交文件之前值得检查的正是这个列表。
复制进你的 compose 文件
输出是一个服务。把它放在 `services:` 下面、和你已有的并列,如果命令没有 `--name`,给它起个你想要的名字。
常见问题
为什么端口加了引号?
因为 YAML 1.1 把 `8080:80` 读成六十进制数——没人想要、却被每个 YAML 解析器继承下来的六十进制语法。加引号才能让它保持为端口映射。这是 Compose 的经典坑。
`--rm` 和 `-d` 去哪了?
丢弃了,并附说明,因为生命周期归 Compose 管。`docker compose up` 决定前台还是后台,`docker compose down` 删除容器,所以这些标志在服务层面没有可以翻译成的对应项。
它会写一整份 compose 文件吗?
它写的是服务。网络、顶层的卷,以及 `version:` 键(现代 Compose 已经不要它了)由你来加——而且大多数情况下你不需要它们。
可以从这些接进来
chmod 权限计算器
chmod Calculator
在八进制、符号和勾选三种权限视图之间互转,含 setuid 和粘滞位。
.env 文件解析与转换
.env Parser & Converter
解析 .env 文件,并转成 JSON、YAML、shell export、Docker 或 Kubernetes 格式。
Docker 镜像分层分析
Docker Image Explorer
打开导出的镜像 tar 包,逐层显示构建命令、大小,以及这一层增删了哪些文件。
JSON 格式化与校验
JSON Formatter & Validator
把 JSON 美化成缩进形式或压成一行,校验语法并直接指出出错的行和列。
接下来
这些工具吃得下当前工具的产出,结果可以直接送过去。
Docker 镜像分层分析
Docker Image Explorer
打开导出的镜像 tar 包,逐层显示构建命令、大小,以及这一层增删了哪些文件。
.env 文件解析与转换
.env Parser & Converter
解析 .env 文件,并转成 JSON、YAML、shell export、Docker 或 Kubernetes 格式。
Kubernetes Secret 解码
Kubernetes Secret Decoder
把 Secret 清单里的每个 Base64 值都解出来,改完再编码回去,直接就能 apply。
YAML 格式化与校验
YAML Formatter & Validator
统一 YAML 缩进并校验语法,把会让解析器崩掉的制表符和锚点错误标出来。
Base64 编码解码
Base64 Encoder & Decoder
对文本和文件做 Base64 与 Base64URL 编解码,UTF-8 处理正确。
curl 转代码
curl to Code
把一条 curl 命令转成 fetch、axios、Python requests、Go、PHP 或 PowerShell 代码。