Docker-compose: Mount a volume only in the first container
I’d like to choose the master container by mounting a file as a volume in the container, with a script at start which check for this file. So I need docker-compose to mount the file only for the first container launched and not for the container created by doing docker-compose scale.
Is it possible ?
One Solution collect form web for “Docker-compose: Mount a volume only in the first container”
What you want to do is not directly possible; when using
docker-compose scale you will get a suite of identical containers. You have several options available for selecting a primary node for your Galera cluster. Here are two; there are undoubtedly others:
Have the primary be a single-instance container in your
docker-compose.yaml file, and only scale the secondary containers.
galera_primary: image: myimage command: command_to_start_galera_master galera_secondary: image: myimage links: - galera_primary command: command_to_start_galera_worker
If you’re willing to write some code, you could probably use etcd to perform master election, probably by taking advantage of the ability to atomically create keys.
I don’t have an example of this handy, but the process should be relatively simple:
- Each node attempts to create a particular key in etcd
- The node that succeeds is the master
- Other nodes can query etcd for the address of the master