我正在使用docker compose运行MariaDB Galera集群,其中每个节点都是一个docker容器,但MariaDB GC在启动时需要一个主节点来初始化数据库。
我想通过在容器中将文件作为卷安装来选择主容器,并在启动时使用脚本检查此文件。所以我需要docker-compose才能为启动的第一个容器安装文件,而不是通过docker-compose scale创建的容器。
有可能吗?
答案 0 :(得分:4)
你想做的事情不是直接可能的;使用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的能力。
我没有这个方便的例子,但这个过程应该相对简单: