我希望能够通过 docker 运行 3 个 Cassandra 实例,并将卷映射到主机上。
我尝试通过运行 docker-compose up --scale cassandra=3 来通过此 docker-compose.yml 使用它,但它无法正确启动它们并在我映射一个卷时显示错误到所有实例。
version: "2"
services:
cassandra:
image: cassandra
volumes:
- /opt/se/docker-volumes/cassandra:/var/lib/cassandra
是否可以在 docker-compose.yml 文件中为多个实例映射多个卷?
我尝试在不定义卷的情况下运行 3 个实例,并且运行良好。
最佳答案
问题是由于当不同的实例启动时,它们正在将数据写入同一卷。这会导致许多竞争条件,并损坏每个实例的 /var/lib/cassandra
目录。
要解决此问题,您需要将每个实例映射到单独的卷。您可以通过删除 compose 文件内的卷映射来实现此目的,并将其留给 docker 来创建数据卷,因为 /var/lib/cassandra
被声明为 VOLUME
cassandra 的 Dockerfile 内部。
或者,您可以手动声明三个 cassandra 服务并将每个服务映射到单独的卷。
关于docker - 通过 docker-compose 运行具有多个卷的多个实例,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49189059/