Docker-compose:仅在第一个容器中装入卷

时间:2015-05-28 13:52:27

标签: docker docker-compose

我正在使用docker compose运行MariaDB Galera集群,其中每个节点都是一个docker容器,但MariaDB GC在启动时需要一个主节点来初始化数据库。

我想通过在容器中将文件作为卷安装来选择主容器,并在启动时使用脚本检查此文件。所以我需要docker-compose才能为启动的第一个容器安装文件,而不是通过docker-compose scale创建的容器。

有可能吗?

1 个答案:

答案 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的能力。

我没有这个方便的例子,但这个过程应该相对简单:

  • 每个节点都尝试在etcd中创建一个特定的密钥
  • 成功的节点是主
  • 其他节点可以查询etcd以获取主服务器的地址