如何将Pulsar与Python运行流程整合到docker-compose.yaml中
配置操作步骤
第一步:整理项目文件结构
先把所有相关文件放到同一个项目根目录下,结构如下:
项目根目录/ ├── docker-compose.yaml ├── Dockerfile ├── requirements.txt ├── consumer.py └── producer.py
第二步:编写Python服务镜像构建文件(Dockerfile)
在项目根目录新建Dockerfile,内容如下,用来构建带Python3.8环境和依赖的镜像:
FROM python:3.8-slim WORKDIR /app COPY requirements.txt . RUN pip install --no-cache-dir -r requirements.txt COPY consumer.py producer.py ./
第三步:编写依赖声明文件(requirements.txt)
在项目根目录新建requirements.txt,填入你脚本需要的依赖,基础的Pulsar客户端参考如下,有其他第三方依赖可以直接追加在后面:
pulsar-client==2.8.1
第四步:更新docker-compose.yaml配置
替换你原来的docker-compose.yaml内容如下:
version: '3.8' services: standalone: image: apachepulsar/pulsar:2.8.1 ports: - 8080:8080 - 6650:6650 command: bin/pulsar standalone # 增加健康检查,确保Pulsar完全启动后再运行Python脚本 healthcheck: test: ["CMD", "bin/pulsar-admin", "brokers", "healthcheck"] interval: 10s timeout: 5s retries: 5 # 基础Python服务,仅用来复用配置,不会单独启动 python-base: build: . profiles: ["donotstart"] depends_on: standalone: condition: service_healthy consumer: extends: python-base command: python consumer.py # 启动失败自动重试,避免Pulsar偶尔启动延迟导致的连接报错 restart: on-failure producer: extends: python-base command: python producer.py restart: on-failure
注意事项
- 你的consumer.py、producer.py中连接Pulsar的地址需要修改为
pulsar://standalone:6650,不要使用localhost,容器内部可通过服务名直接访问Pulsar节点 - 所有文件准备完成后,在项目根目录执行
docker compose up即可一键启动所有服务
内容的提问来源于stack exchange,提问作者Hofbr
相关产品推荐
相关产品推荐

