Docker-compose Predis 不通过 PHP 连接

2024-04-23

我正在尝试使用 docker ( compose) 将 PHP 与 redis 连接

docker-compose.yml

version: '2'
services:
  redis:
    image: redis:3.2.2
  php:
    image: company/php:dev7
    volumes:
      - .:/var/www/
    networks:
      - net
    links:
      - redis
  nginx:
    image: company/nginx
    volumes:
      - .:/var/www/
      - ./docker/nginx_conf:/etc/nginx/conf.d/
    networks:
      - net
    ports:
      - 80:80
networks:
  net:
    driver: bridge

这一切都运行良好,我可以运行 nginx 和 php。但是,当我尝试连接 Redit 时,它告诉我无法获取地址信息:

致命错误:未捕获 Predis\Connection\ConnectionException:php_network_getaddresses:getaddrinfo 失败:/var/www/htdocs/vendor/predis/predis/src/Connection/AbstractConnection.php 中的名称或服务未知 [tcp://redis:6379] 155号线

这是我尝试连接的方式:

$client = new \Predis\Client([
    'host'   => 'redis',
]);

另外,当我查看 redis docker 容器并查看时/etc/主机没有 redis 主机名。至少我期待它在这里,因为我试图将它链接到 docker-compose.yml 中。

我配置错了什么?


你忘记添加redis容器到dev网络。

您可以更新 docker-compose.yml

version: '2'
services:
  redis:
    image: redis:3.2.2
    networks:
      - net
  php:
    image: company/php:dev7
    volumes:
      - .:/var/www/
    networks:
      - net
  nginx:
    image: company/nginx
    volumes:
      - .:/var/www/
      - ./docker/nginx_conf:/etc/nginx/conf.d/
    networks:
      - net
    ports:
      - 80:80
networks:
  net:
    driver: bridge

另外,您可以省略容器的links如果你定义了bridge网络。

另外 2. 你永远不会在以下位置找到链接的容器 IP 和主机名hosts文件。 Docker 使用内部 DNS 服务

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Docker-compose Predis 不通过 PHP 连接 的相关文章

  • 可能的 PDOException 错误(MySQL 5)?

    因此 我正在为我的网络应用程序设置一个安装程序 并具有数据库凭据的输入字段 我的验证过程的一部分包括测试数据库连接 使用 PHP 的 PDO 库 如果连接失败 我希望能够区分错误的密码 错误的地址 不存在的数据库名称等 以便我可以引用表单上
  • PHP:查找所有以“:”开头的单词

    你能帮我用 PHP 函数 正则表达式在给定的文本中找到所有以字符 开头的单词吗 换句话说 所有以 开头并用 空格 分隔的子字符串 Since word应该可能是有效的 我想 word another应该算两个词 那么你就不能说总有一个空格
  • PHP 中检查数字是否为浮点型

    这实在是太奇怪了 我有这段代码 rewardAmt amt if is float rewardAmt print r is float die else print r is not float die amt 的值为 0 01 但它正在
  • 如何加密然后解密数据库类文件中使用的用户名和密码文本

    我创建了一个类文件database php 它处理所有sql 查询并连接到数据库 我将数据库的用户名和密码存储在一个变量中 如果可以访问 php 文件 很容易看到 我想加密该用户名和密码 这样即使在拥有该 php 文件之后 人们也无法知道原
  • 2 个使用 jQuery 或 Ajax 的自动完成/建议输入框,第二个框基于多个项目的第一个选择

    我尝试过很多 jquery 和 ajax 自动完成脚本 我发现很难尝试将它们中的任何一个集成到我需要的东西中 让我解释一下我想要实现的目标 我需要 2 个自动完成框 第二个从第一个中提取数据 它们还必须都支持多个条目 查询数据库中的数据 我
  • 当 docker 处于分离状态或前台时,日志不会发送到 AWS Cloudwatch

    当我以交互模式运行 docker 脚本时 它可以工作 我可以在控制台和 AWS CloudWatch Logs 中查看日志 下面的 docker 脚本以交互模式运行 我添加了 awslogs 配置 以便日志进入 cloudwatch doc
  • 如何从 ubuntu 14.04 中完全删除 docker

    我不久前在 Ubuntu 上安装了 Docker 但是当我尝试删除时 Docker 仍然存在于系统中 我跟着这个https stackoverflow com a 31313851 2340159 https stackoverflow c
  • 为什么服务器端和客户端脚本无法交互?

    我是客户端和服务器端脚本的新手 我想知道它们为什么不能交互 Code Conquest 指出的主要区别here http www codeconquest com website client side vs server side 就是它
  • APT:Post-Invoke 在 debian:bookworm-slim 上失败

    我有一个 Jenkins 管道 它使用docker dind 20 在这个过程中我做 FROM ruby 3 2 slim bookworm apt get update 当我尝试使用我的本地构建映像 MacOS ventura 时dock
  • 将数组写入文件的最佳方法? [关闭]

    Closed 这个问题是基于意见的 help closed questions 目前不接受答案 我想避免写入数据库并使用常量 数组作为 lang 文件等 i e lang array hello gt hello world 并能够从后台编
  • 如何在多个端口上运行 FastAPI 应用程序?

    我有一个 FastAPI 应用程序 正在使用 Uvicorn 以编程方式在端口 30000 上运行 现在我也想在端口 8443 上运行相同的应用程序 相同的应用程序需要在这两个端口上运行 我怎样才能在Python代码中做到这一点 最小可重现
  • php中的可变长度数据包

    我正在接收通过 UDP 发送到我的服务器的数据包 我正在使用 socket read 来读取数据 它运行得很好 但是我遇到了一个错误 在我的例子中 socket read 的长度参数并不总是相同的 数据长度的范围可以是 50 150 字节
  • time() 会返回相同的输出吗?

    当用户注册时 我正在为 PHP 中的用户生成令牌 我想知道两个用户是否可以获得相同的令牌 因为这会破坏系统 请让我知道这是否足够 token md5 rand time 编辑 我现在正在使用我在另一个问题上找到的generate uuid
  • Codeigniter:对未定义函数 mysqli_init() 的致命错误调用

    我刚刚更改了服务器并遇到以下错误 Fatal error Call to undefined function mysqli init in home blacktwitter public html system database dri
  • 如何使用 file_put_contents() 写入变量值?

    一整天都在试图解决这个问题 假设这只是一个小错误 我正在尝试使用file put content将变量值放入另一个 php 文件中 下面的代码将解释 将数据写入php的文件
  • 单击时获取按钮值并回显它

    我是 php 的初学者 我的第一个任务是构建一个计算器 我在这里询问如何从按钮获取值并在同一页面上回显它 我正在尝试使用 isset 通过方法发布 但能够在同一页面上显示任何值
  • PHP file_get_contents 错误 503

    我收到错误 503服务暂时不可用 与我通话 url https www okex com api v1 ticker do symbol ltc btc page json decode file get contents url true
  • 在另一个数组的每隔一个元素之后插入一个数组中的元素(一次一个)(不均匀拉链)

    合并两个数组的优雅方法是什么 使得生成的数组具有第一个数组中的两个项目 后跟第二个数组中的单个项目 以这种方式重复 array1 A1 A2 A3 A4 A5 potentially longer array2 B1 B2 B3 B4 B5
  • 我在 wamp for PHP 路径中遇到错误

    我的 wamp 服务器图标当前为橙色 这意味着 3 个服务器中只有 2 个正在运行 我无法打开 phpmyadmin 页面 因为它给出 404 未找到错误 如果我右键单击底部的 wamp 图标 则会收到一条错误消息 Error C wamp
  • XPath 节点到字符串

    如何选择以下节点的字符串内容 span class url word b class test b span span class url word b class test2 b more words span 我尝试过一些事情 span

随机推荐