无法从Laravel应用程序连接到Redis

8
我需要在我的Laravel应用程序中配置Redis与Socketio。然而,无论我尝试了什么,我都得到了相同的错误信息:Connection refused [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

docker-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" ]

你如何读取你的 .env 文件?错误明显地显示你的主机设置为 127.0.0.1 - Kevin Kopf
Redis主机正在容器端口0.0.0.0:6003->6379/tcp上运行。DB_HOST=postgres正常运行,我在这里缺少什么?@AlexKarshin - esilik
3个回答

13

错误信息显示它无法连接到端口为6379127.0.0.1。因此,请确保主机和端口正确:

  • 主机 127.0.0.1 正确:如果您在与Redis相同的主机上运行php,或者在Docker主机上运行php,则可以使用此选项,但在这种情况下,端口将是6003

  • 端口 6379 正确:主机不正确,您必须指定Docker容器主机名:redis

  • 确保配置缓存正确


1

将您的REDIS_HOST设置为redis,例如REDIS_HOST=redis。原因是您已经构建了docker文件并指定了redis作为您的redis服务的名称。


0

遇到了相同的问题...

还更新了以下内容在 redis.conf 文件中

bind 127.0.0.1 

bind redis

由于 Redis 是现有的主机


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接