You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何通过Docker Compose运行两个RabbitMQ关联的PHP脚本?

解决方案

要让两个容器分别运行send.php和receive.php,只需在docker-compose.yml中为每个服务显式指定运行命令,同时优化配置中的冗余项,具体步骤如下:

1. 调整Dockerfile(可选但推荐)

如果你的Dockerfile当前固定了CMD ["php", "./send.php"],可以将其改为通用形式,让容器更灵活:

FROM php:7.4.cli

# 安装RabbitMQ PHP扩展(如果你的脚本依赖此扩展)
RUN apt-get update && apt-get install -y librabbitmq-dev \
    && pecl install amqp \
    && docker-php-ext-enable amqp

# 设置容器内默认工作目录
WORKDIR /app

# 改为通用CMD,方便后续在docker-compose中覆盖
CMD ["php"]

2. 修改docker-compose.yml配置

更新配置,为send和receive服务指定各自的运行命令,并清理不必要的端口:

version: "3"

services:
  rabbit_mq:
    image: rabbitmq:3-management-alpine
    container_name: 'rabbitmq'
    ports:
      - 5672:5672      # RabbitMQ服务端口
      - 15672:15672    # 管理界面端口
    volumes:
      - ./docker/rabbitmq/data/:/var/lib/rabbitmq/
      - ./docker/rabbitmq/log/:/var/log/rabbitmq
      - ./docker/rabbitmq/conf/:/var/conf/rabbitmq
    environment:
      - API_URL=Api:8000

  send:
    build:
      context: './docker'
      dockerfile: Dockerfile
    container_name: send
    working_dir: /app
    volumes:
      - ./:/app
    # 显式指定运行send.php脚本
    command: ["php", "./send.php"]
    depends_on:
      - rabbit_mq

  receive:
    # 和send服务使用同一个自定义镜像,确保PHP环境依赖一致
    build:
      context: './docker'
      dockerfile: Dockerfile
    container_name: receive
    working_dir: /app
    volumes:
      - ./:/app
    # 显式指定运行receive.php脚本
    command: ["php", "./receive.php"]
    depends_on:
      - rabbit_mq

3. 关键说明

  • 显式指定command:通过command字段覆盖Dockerfile中的默认CMD,强制每个容器执行对应的脚本。
  • 统一镜像构建:让send和receive使用同一个自定义镜像,避免因环境差异导致的依赖问题。
  • 移除无用端口:send.php和receive.php是CLI脚本,不需要对外暴露端口,删除ports配置可减少资源占用。
  • 工作目录对齐:通过working_dir: /app确保容器内工作目录与挂载的本地目录一致,脚本路径更清晰。

4. 启动验证

执行以下命令启动所有服务:

docker-compose up -d

查看容器运行状态:

docker-compose ps

查看容器日志验证脚本运行情况:

# 查看send容器日志
docker-compose logs send

# 查看receive容器日志
docker-compose logs receive

内容的提问来源于stack exchange,提问作者Darya

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.09 00:50:44