在我们使用docker创建部署一些开源项目或者其他项目的时候,我们经常遇到这样的场景问题:通过反复调试docker run命令启动了一个包含复杂参数的容器(比如挂载了多个卷、设置了环境变量、配置了网络端口等等),最终都需要将其转化为可复用的docker-compose.yml文件才可以进行创建容器。

手动转换的弊端:耗时,还容易遗漏参数。这篇推荐的coracoo/docker2compose开源项目,正是为解决这一痛点而生——它能将复杂的docker run命令智能转换为完整的Docker Compose配置!项目开源地址如下:
https://github.com/coracoo/docker2compose
docker2compose是一个开源的 Docker Compose 文件生成工具。它的核心功能是读取 NAS 或服务器中已运行的 Docker 容器信息,自动分析容器间的网络关系,并根据规则生成对应的docker-compose.yaml文件。这大大方便了我们手动使用命令而容易出错的问题
该项目主要具备以下特点:
(1)读取系统中所有Docker容器信息
(2)分析容器之间的网络关系
(3)根据网络关系将相关容器分组
(4)为每组容器生成对应的docker-compose.yaml文件假如我们正在调试出一个启动PostgreSQL数据库容器的命令:
docker run -d
--name db
-v pgdata:/var/lib/postgresql/data
-e POSTGRES_PASSWORD=secret
-p 5432:5432
--network myapp
postgres:15使用docker2compose转换为对应的docker-compose.yml文件。
docker2compose "docker run ..." > docker-compose.yml最终输出的结果为:
version: '3.8'
services:
db:
image:postgres:15
container_name:db
environment:
-POSTGRES_PASSWORD=secret
volumes:
-pgdata:/var/lib/postgresql/data
networks:
-myapp
ports:
-"5432:5432"
volumes:
pgdata:
networks:
myapp:
driver:bridge