【问题标题】:Docker No MySQL connection to NginxDocker 没有 MySQL 连接到 Nginx
【发布时间】:2017-02-20 23:18:51
【问题描述】:

我构建了一个 compose 文件,用于创建 nginx、php、mysql 和 phpmyadmin。

一切都在为自己工作。 PHPmyAdmin 可以与 mysql 容器对话。 Nginx 可以与 php 容器对话。

但似乎 nginx 或 php 无法与 mysql 对话。当执行类似的东西时

mysql_connect('localhost','florian','pw')

它回馈:

未捕获的错误:调用未定义的函数 mysql_connect()

这是我的 docker-compose.yml

php:
    build: php-docker/.
    container_name: php
    ports:
      - "9000:9000"
    volumes:
      - /var/www/:/var/www/

nginx:
    build: nginx-docker/.
    container_name: nginx
    links:
      - php
    ports:
      - "80:80"

mysql:
    build: mysql-docker/.
    container_name: mysql
    volumes:
      - /var/mysql:/var/lib/mysql
    environment:
      MYSQL_ROOT_PASSWORD: pw
      MYSQL_USER: florian
      MYSQL_PASSWORD: pw
      MYSQL_DATABASE: db


  phpmyadmin:
    build: phpmyadmin/.
    links:
     - mysql:db
    ports:
     - 1234:80
    container_name: phpmyadmin
    environment:
     PMA_ARBITRARY: 1
     PMA_USERNAME: florian
     PMA_PASSWORD: pw
     MYSQL_ROOT_PASSWORD: pw
    restart: always

【问题讨论】:

  • 你用的是什么版本的php? Mysql 扩展已从 php7 中删除。使用 PDO 或 mysqli
  • 你能从你的主机访问 MySQL 吗?
  • 如果您的 MySQL 实例在其他容器中运行,您将无法连接到 localhost。首先,如果您不使用默认网络,您需要连接 docker 网络上的两个容器。现在您可以使用容器名称(在本例中为 mysql)或 IP 连接到 MySQL 容器。
  • @GiorgioCerruti 我以为我是用我的链接声明来做到这一点的。
  • @frz3993 我使用 php 7.0。你确定吗?当我在 Wordpress 中收到此错误时。但是在我的strato主机上,完全相同的wordpress版本在php7.0上运行

标签: php mysql nginx docker


【解决方案1】:

mysql_connect 函数已从 PHP 7.0 中移除。

您必须将您的代码迁移到提供类似功能mysqli_connect的mysqli扩展,或者迁移到PDO。

参考(看红色警告):http://php.net/manual/en/function.mysql-connect.php

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-12-27
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多