我有一个关于多个容器相互交互的系统架构的问题。
让我docker-compose.yml描述一下容器系统。
但它们的“存在时间”不同:
在这些容器中,有一些“长期存在的”容器——例如,一个数据库,该容器一直在运行。并且被其他几个容器使用。
或者 nginx,它充当“从外部到内部资源”连接的代理。
还有一些短命的,根据“起床,到外部站点,将结果写入数据库并死掉”的原则来解决一个特定问题。
所有这些都在一个 docker compose 中进行了描述,并且在一个networks.
这就是问题所在:我解除了所有这些结构,一个为我工作的短命容器(完成了它的工作而死了)。
在我做这样的事情之前docker-compose stop,我的“长寿”容器一直在运行。
它适合我!
但有时,我需要再次运行我的“短命”容器——例如,通过 cron。
你会怎么做?也就是说,如何启动一个容器,使其在启动时最终位于同一个网络中,并且可以与其他“长寿命”容器交互?
因为每次停止和启动所有这些巴拉莱卡琴都比“踢”一个特定的容器要长得多。
我想到制作另一个docker-compose.yml,其中只描述了这个“短期”容器中的一个,并且是同一个networks,但它不起作用,因为我的“短期”容器依赖于“长期”住”一个,它已经在运行。
我将不胜感激!
您
docker-compose up可以指定服务名称见https://docs.docker.com/compose/reference/up
因此,第一次运行命令
docker-compose up时,所有容器都会启动——包括那些你称之为“长期”的容器和那些你称之为“短期”的容器。现在让“短命”容器工作。所有其他“长寿”容器都在运行,您可以通过调用来验证这一点
docker ps您可以使用这个“短命”容器的名称运行命令
docker-compose up- 它会重新启动,同时会与已经运行的容器交互。