symfony - docker 容器中的 Symfony4 和 RabbitMQ
问题描述
我有多个 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 访问(根本不明白)
解决方案
推荐阅读
- suitescript - 如何通过 Netsuite 中的 adhoc CS 通过 prompt() 设置字段的值?
- r - magrittr 管道中的子集化而不影响整个对象
- ios - UIKit 目标动作选择器是否总是在主线程上调用?
- django - Django:按月计算对象
- sql - CAST 总是从开头剪断一个字符串吗?
- xml - 无法读取 xsl 中的值
- getstream-io - 使用 go package 时如何检查响应头
- c - C 为什么布尔值实际上可以表示为一位时是一个字节?
- onclick - 如何在点击 svelte 时导航到不同的路径?
- adobe - Direct access to permission of meeting field in database of adobe connect