0

如何使用Docker Compose来同步容器执行?

我要解决的问题类似于Docker Compose 在启动 Y 之前等待容器 X。我使用 Docker Compose 启动了几个容器,它们都运行在同一台主机上,其中三个是 PostgreSQL、Liquibase 和一个在 Tomcat 中运行的 Web 应用程序 servlet。PostgreSQL 和 Web 应用程序容器都是长期运行的,而 Liquibase 容器是短暂的。容器不仅必须按顺序启动,而且每个容器还必须等待前一个容器可用或完成. 尤其是 PostgreSQL 服务器必须在 Liquibase 容器运行之前准备好处理 SQL 命令,并且 Liquibase 架构迁移任务必须在 Web 应用程序启动之前完成,以确保数据库架构处于有效状态。

我知道我可以使用两个轮询某些条件的包装“等待”脚本来实现这种同步(这可能是唯一可用的选项),其中第一个将轮询 PostgreSQL 服务器的可用性以处理命令,而第二,它将在 Web 应用程序之前运行,可以轮询特定数据库对象的存在。但是,与进程同步一样,我认为容器同步是一个常见问题,可以通过更通用的进程间通信和同步原语(如信号量)来解决. Docker Compose 可能会从此类同步机制中受益最多,但 Docker 容器可能会发现它们也很有用,例如,在容器内建立多个同步点。

4

3 回答 3

0

除了consuletcdZooKeeper之外,MQTT保留消息是 Docker 容器可能用来协调活动的另一种简单机制。Mosquito是 MQTT 的轻量级开源实现。

于 2016-05-10T16:07:59.537 回答
0

在 Docker Compose 或 Docker 支持容器同步原语(类似于进程同步原语,但可从 shell 访问)之前,docker-compose 与 inotify的依赖关系是我发现的 Docker Compose 容器同步问题的更好解决方案之一。

于 2016-05-06T18:40:35.217 回答
0

我得出的结论是 Docker Compose 不是最适合容器同步的工具。KubernetesMarathon等工具有助于实现更复杂的容器同步。 什么是最好的 Docker Linux 容器编排工具?比较可用的容器同步工具。

于 2016-05-13T16:50:06.143 回答