繁体   English   中英

Docker-compose:仅在第一个容器中挂载卷

[英]Docker-compose: Mount a volume only in the first container

我正在使用docker compose运行MariaDB Galera群集,其中每个节点都是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 原子地创建key的功能来使用etcd进行主选举。

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM