我正在使用 docker compose 来运行 MariaDB Galera Cluster,其中每个节点都是一个 docker 容器,但 MariaDB GC 在启动时需要一个主节点来初始化数据库。
我想通过在容器中安装一个文件作为卷来选择主容器,并在启动时使用一个脚本来检查这个文件。所以我需要 docker-compose 只为启动的第一个容器安装文件,而不是为通过 docker-compose scale 创建的容器安装文件。
是否可以 ?
最佳答案
您想要做的事情不是直接可能的;使用 docker-compose scale
时你会得到一套相同的容器。您有几个选项可用于为 Galera 集群选择主节点。这里有两个;毫无疑问还有其他:
显式初级
让主容器成为您的 docker-compose.yaml
中的单实例容器文件,并且仅缩放辅助容器。
galera_primary:
image: myimage
command: command_to_start_galera_master
galera_secondary:
image: myimage
links:
- galera_primary
command: command_to_start_galera_worker
动态初级
如果你愿意写一些代码,你可以使用 etcd执行主选举,可能是利用 atomically create keys 的能力.
我没有这个方便的例子,但过程应该相对简单:
关于Docker-compose:仅在第一个容器中安装卷,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30508576/