docker - 通过 docker-compose 运行具有多个卷的多个实例

标签 docker cassandra docker-compose

我希望能够通过 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/

相关文章:

spring-boot - 如何对在Docker容器中运行的Spring Boot应用程序进行健康检查

docker - 如何从 docker-compose.yml 指定 nvidia 运行时?

docker - Docker Compose文件:从另一个文件引用环境变量

docker - 使Docker Swarm使用Docker-Compose中的相​​同卷

linux - 在 docker 容器中挂载 cgroup

spring-data-jpa - Spring Data Cassandra Reactive - "MappingException Couldn' t 找到类型类 java.lang.Object 的 PersistentEntity”

python - 仅更新 cassandra 中的 TTL

带有 docker-compose 的 Node.js 容器无法运行

docker - 无法加载源 https ://api. nuget.org/v3/index.json 的服务索引。 [C :\app\aspnetapp. csproj]

Java Cassandra 异常 timeuuid