symfony - docker容器中的Symfony4和RabbitMQ

标签 symfony docker rabbitmq docker-compose

我有多个docker容器,它们在我的工作设置中提供不同的功能。一种用于网络,其中我的symfony项目作为卷安装。还有一个用于RabbitMQ的软件,应该由symfony项目的消息提供。我用docker-compose和ansible构建容器。

这是我的docker-compose.yml

version: '2'
services:
  web:
    depends_on:
      - db
      - rabbit_mq
    build: ./container/web
    container_name: web
    ports:
      - "80:80"
    volumes:
      - [PATH]:/var/www/html/project
  db:
    image: mysql:5.7
    container_name: mysql
    environment:
      MYSQL_ROOT_PASSWORD: "USER"
      MYSQL_DATABASE: "PASS"
    ports:
      - "3306:3306"
    volumes:
      - mysql_data:/var/lib/mysql
    restart: always
  rabbit_mq:
    image: "rabbitmq:3-management"
    hostname: "rabbitmq-localhost"
    container_name: rabbitmq
    ports:
      - "15672:15672"
      - "5672:5672"
    volumes:
      - rabbit:/var/lib/rabbitmq
      - "./container/rabbitmq/config/enabled_plugins:/etc/rabbitmq/enabled_plugins"
      - "./container/rabbitmq/config/rabbitmq.config:/etc/rabbitmq/rabbitmq.config"
      - "./container/rabbitmq/config/definitions.json:/etc/rabbitmq/definitions.json"
    command:  bash -c "sleep 10; rabbitmq-server;"
volumes:
  mysql_data:
  rabbit:
    driver: local

它一切正常,Symfony和RabbitMQ已启动并正在运行,我可以通过http://localhost:15672访问rabbitmq管理

现在,我尝试将消息推送到RabbitMQ队列,但出现错误:
stream_socket_client(): unable to connect to tcp://127.0.0.1:5672 (Connection refused)

这是我的symfony .env配置
RABBITMQ_URL=amqp://user:pass@127.0.0.1:5672/vhost

当我检查Rabbitmq容器时,我看到它的IPAdress是
"IPAddress": "172.18.0.3"

因此,当我将此IP放入symfony .env文件时,便能够将消息推送到队列中。但是,每次我重新运行docker容器时,此ip都会更改,并且我不想一直更改symfony配置。那么,管理此类方案的最佳实践是什么。

顺便说一句:可通过127.0.0.1:3306访问数据库容器(一点也不了解)

最佳答案

尝试设置RABBITMQ_URL=amqp://user:pass@rabbit_mq:5672/vhost。 rabbit_mq是RabbitMQ服务的名称,也是您在depends_on中使用的服务的名称,对于MySql,您应该使用db作为主机

An example(用于Enqueue存储库)

关于symfony - docker容器中的Symfony4和RabbitMQ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50169444/

相关文章:

PHPStorm 正在为 Symfony 项目中注释中使用的导入显示警告

twig 扩展中的 Symfony 依赖注入(inject)

hadoop - 使用 Docker 的多节点 Hadoop 集群

python - Docker找不到配置文件

python - 鼠兔,stop_consuming 不起作用

linux - 在 linux 上安装 rabbitmqadmin

php - php Datetime 月份的doctrine2

symfony - 如何使用变量处理 Twig 文件中的翻译?

ruby-on-rails - 使用 selenium/standalone-chrome 在 dockerized Rails 5 应用程序中进行 RSpec 系统测试的 SSL 错误

python - rabbitmqadmin无法处理unicode?