Skip to content
有趣的开源项目
Go back

Composerize

你有没有过这样的经历——在某个教程或 StackOverflow 答案里,复制下来一条超长的docker run命令,它像一辆由参数堆砌而成的列车,你眯着眼,试图从-v-e--restart的迷宫中拼凑出这个容器到底做了些什么?然后,当你需要把它沉淀为一份可维护的compose.yaml文件时,就仿佛要把这列飞驰的火车拆成一堆能看清标签的零件。如果有个魔法按钮,能让这趟列车瞬间变成一个整洁的乐高图纸,那该多好。

这就是 Composerize 为你准备的惊喜。它只有一个核心任务:把docker run命令转换成 Docker Compose 格式的 YAML 配置文件。简单得就像它的 Emoji 暗示的那样:🏃→🎼,把奔跑的(docker run)变成乐谱(docker-compose)。

痛点场景:那些年,我们一起追的“长命令”

想象一下,你在测试一个小项目,用以下命令启动了一个 Nginx 容器,感觉很方便:

docker run -d -p 80:80 -v /var/run/docker.sock:/tmp/docker.sock:ro --restart always --log-opt max-size=1g --name my-nginx nginx

两周后,你想把这个服务规整到项目的compose.yaml里,再加个数据库。你盯着那条命令,手动敲缩进、翻译参数,心里嘀咕:“这个--restart在 compose 里是unless-stopped还是always来着?” 这种重复翻译工作,是时候交给机器了。

它不仅是个翻译官,还是个“乐高拼接大师”

Composerize 的本事绝不止步于“翻译”。它有几个让开发者会心一笑的特点:

上手一试:你会觉得“就这?也太简单了!”

打开 https://composerize.com ,把前面那条 Nginx 长命令粘贴进文本框,点击“Convert”,右边立刻出现:

version: '3.3'
services:
    my-nginx:
        ports:
            - '80:80'
        volumes:
            - '/var/run/docker.sock:/tmp/docker.sock:ro'
        restart: always
        logging:
            options:
                max-size: 1g
        image: nginx

看,连--log-opt都被体贴地转换成了结构化的logging配置。如果想在终端里玩,只需:

npm install composerize -g
composerize docker run -p 80:80 -v /var/run/docker.sock:/tmp/docker.sock:ro --restart always --log-opt max-size=1g nginx

输出结果会直接打印在屏幕上,堪称“复制粘贴工程师”的福音。

让“命令行咒语”变成可共享的乐谱

Composerize 解决的不是一个宏大命题,而是日常开发中那个不大不小、却总让你停顿几分钟的“翻译”痛点。它让你在快速实验(docker run)和规范化管理(compose.yaml)之间,有了一条平坦的过渡带。从此,你可以更专注于服务编排的架构,而不是和参数格式搏斗。

如果你也曾被某条神秘长命令困扰过,不妨去它的 GitHub仓库 https://github.com/composerize/composerize 看看。或许,点个星星就是收藏了这个“翻译魔法”,也欢迎随时提个 PR,一起让这个转换小工具变得更聪明。毕竟,把跑着的东西谱成曲,是一件挺优雅的事,不是吗?



Previous Post
Hasty Paste
Next Post
Plausible