【问题标题】:Docker multi container dependencyDocker 多容器依赖
【发布时间】:2020-02-07 14:01:01
【问题描述】:

我对 docker 还很陌生。

我的问题是 - 我有一个多容器应用程序(zookeeper、kafka、生产者、消费者),我只想在 zookeeper 和 kafka 容器启动并运行后运行生产者和消费者容器。如何编辑 docker-compose 文件并实现它? kafka 容器需要大约 15 秒来设置和创建消费者收听的主题。我想在创建主题后运行消费者容器,以便我已经启动并运行了一个代理。提前致谢。

Docker 编写文件 -

version: '3'

services:

  zookeeper:
    image: wurstmeister/zookeeper
    container_name: zookeeper
    ports:
      - 2181:2181

  kafka:
    image: wurstmeister/kafka
    container_name: kafka
    ports:
      - 9092:9092
    environment:
      - KAFKA_ADVERTISED_HOST_NAME=someserver
      - KAFKA_ZOOKEEPER_CONNECT=zookeeper:2181
      - "KAFKA_CREATE_TOPICS=test:1:1"
    volumes:
      - /var/run/docker.sock:/var/run/docker.sock

  consumer:
    build:
      context: .
      dockerfile: Dockerfile
    container_name: consumer
    depends_on:
            - kafka
            - zookeeper

Dockerfile -

FROM python

RUN pip install kafka-python

RUN pip install pandas
COPY . /src

CMD ["python", "/src/consumer.py"]

【问题讨论】:

    标签: python docker apache-kafka docker-compose dockerfile


    【解决方案1】:

    我认为documentation 中描述了您要查找的内容。但是,最佳实践是让容器重新建立它们的连接。如果您不想这样做,可以使用简单的 shell 脚本等待连接尝试。

    【讨论】:

      【解决方案2】:

      您可以在 kafka 服务定义中添加健康检查块。请参阅https://docs.docker.com/compose/compose-file/#healthcheck 上的文档

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2019-11-16
        • 2021-11-27
        • 1970-01-01
        • 2017-04-18
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多