docker - 无法从 Laravel 应用程序连接到 Redis
问题描述
我必须在我的 Laravel 应用程序中使用 Socketio 配置 Redis。但是,到目前为止,我尝试过的都是同样的错误:
连接被拒绝 [tcp://127.0.0.1:6379] 我
我可以使用 docker exec -it id sh 进入容器,当我 ping 服务器时,我会收到 PONG 消息。客户端在我的 database.php 文件中已经是“predis”,并且还安装了包。
.env
REDIS_HOST=redis
REDIS_PASSWORD=null
REDIS_PORT=6379
码头工人-compose.yml
version: "2"
services:
api:
build: .
ports:
- 9000:9000
volumes:
- .:/app
- /app/vendor
depends_on:
- postgres
- redis
environment:
DATABASE_URL: postgres://xx@postgres/xx
postgres:
image: postgres:latest
environment:
POSTGRES_USER: xx
POSTGRES_DB: xx
POSTGRES_PASSWORD: xx
volumes:
- .Data:/var/lib/postgresql/data
ports:
- 3306:5432
redis:
build: ./Redis/
ports:
- 6003:6379
volumes:
- ../RedisData/data:/data
command: redis-server --appendonly yes
Dockerfile (redis)
FROM redis:alpine
COPY redis.conf /usr/local/etc/redis/redis.conf
CMD [ "redis-server", "/usr/local/etc/redis/redis.conf" ]
解决方案
错误是说它可以连接到127.0.0.1
端口6379
。所以确保主机和端口是好的:
主机 127.0.0.1 可以:如果您在与 redis 相同的主机上运行 php,或者如果您在 Docker 主机上运行 php,则此工作,但在这种情况下,端口将为
6003
端口 6379 可以:主机不好,必须指定 Docker 容器主机名:
redis
确保配置缓存正常
推荐阅读
- python - 我的代码怎样才能写得更简洁?
- javascript - 无法将随机数分配给“setTimeout”函数
- python - 列出类中超出范围的索引
- python - Python:将网络位转换为二进制
- python - 如何跳过抓取时无法打开的链接?
- java - 如何删除每行末尾的尾随空格?
- selenium-webdriver - Robot Framework:如果任何关键字失败,请截图
- python-3.x - 使用 Delaunay 三角剖分创建 networkx 图
- javascript - 如何使用 HTML 发送 Google App Script 电子邮件
- cmake - 目标类型取决于通用规则