如何快速切换docker个开发环境?

How to quickly switch between docker environments for development?

我有多个项目需要定期切换。这些项目是通过 docker-compose 设置的,但有些项目需要外部容器才能使用。

所以为了在项目中运行 docker-compose up -d,我必须先切换到不同的目录并在那里启动一些基本服务容器(mysql的共享实例,redis等)。

我不想 运行 所有容器并行,对于某些容器来说这是不可能的,因为它们在同一个端口上侦听。

我还觉得恼人的是,某些容器需要在其中 运行 脚本才能在开发中正常运行,我发现自己重复执行相同的命令只是为了切换到项目。

我认为这可以自动化,我只是不确定如何解决这个问题。

如何快速切换 docker 环境?我的目标是只有一条线。

我当前的工作流程现在涉及 desk

对于每个项目,我都通过以下方式初始化了一张桌子:

desk edit project_a

在那里我 运行 我会手动完成的所有步骤,例如:

ponysay "INIT PROJECT A"
docker stop $(docker ps -a -q) # stopping all the running containers
cd ~/src/docker-compose/basic-services 
docker-compose up -d
cd ~/src/project_a
docker-compose up -d
docker exec -it project_a_container_name /var/www/project_a/docker/scripts/dev-init.sh

我通过以下方式在环境之间切换:

desk . project_a
desk . project_b

现在切换项目变得非常容易。