【发布时间】: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上运行