【问题标题】:docker-compose up with cassandra container does not returndocker-compose up with cassandra 容器不返回
【发布时间】:2019-03-03 21:30:25
【问题描述】:

我有一个简单的 docker-compose 文件

 version: '3'
services:
  cassandra:
    image: "cassandra:3.11.4"
    container_name: leguan_cassandra
    ports:
      - "9042:9042"
    volumes:
      - ./build/cassandra:/var/lib/cassandra

永远不会回来。您能否举个例子,在确保 cassandra 准备就绪和可用后,docker-compose 如何返回?

提前致谢 马库斯

【问题讨论】:

  • 我试图了解“返回”对您意味着什么,但如果您指的是您能够保持提示,请尝试将 -d--detach 添加到 docker-compose up 命令例如docker-compose -d up
  • 另外请注意,Docker Compose 不负责检查任何服务是否“就绪且可用”。如果您使用docker-compose up -d 或在同一个docker-compose.yml 中有其他服务,Compose 将立即继续;如果数据库需要一段时间才能启动,Compose 不会等待。
  • 我目前正在尝试使用 docker-compose 在单元测试之前启动一个 cassandra,然后想停止它。所以我使用了gradle插件“com.avast.gradle:gradle-docker-compose-plugin:0.8.14”,它调用了没有-d的docker-compose。那我理解对了吗?我必须用-d启动它,然后等待数据库自己来?

标签: docker cassandra


【解决方案1】:

好的,谢谢你的回答,

有了这个 docker-compose.yml 它现在对我有用:

version: '3'

services:
  cassandra:
    image: "cassandra:3.11.4"
    container_name: leguan_cassandra
    ports:
      - "9042:9042"
    volumes:
      - ./build/cassandra:/var/lib/cassandra
    healthcheck:
      test: ["CMD-SHELL", "[ $$(nodetool statusgossip) = running ]"]
      interval: 10s
      timeout: 5s
      retries: 50

【讨论】: