Docker (Ubuntu 16.04) Apache/PHP7/Mysql5_7 - 数据库:连接失败:连接被拒绝
Docker (Ubuntu 16.04) Apache/PHP7/Mysql5_7 - Database: Connection failed: Connection refused
我正在尝试设置 docker-容器:Apache/PHP7/Mysql 5.7 通过 docker-compose up on Ubuntu 16.04.
问题是我没有从 index.php (localhost:8080) 获得数据库连接。
如果我尝试连接它说:"Connection failed: Connection refused".
apache-php7 docker文件:https://github.com/nimmis/docker-apache-php7/blob/master/Dockerfile
文件夹是:
apache-php7(包括 Dockerfile)
html(包括index.php)
mysql(mysql数据)
docker-compose.yml:
version: '2'
services:
php:
build: apache_php7
container_name: apache_php7
ports:
- "8080:80"
- "443:443"
volumes:
- ./html:/var/www/html
links:
- db
db:
image: mysql:5.7
container_name: mysql_5_7
volumes:
- ./mysql:/var/lib/mysql
ports:
- "127.0.0.1:3306:3306"
environment:
- MYSQL_ROOT_PASSWORD=test
- MYSQL_USER=admin
- MYSQL_PASSWORD=test
- MYSQL_DATABASE=database
index.php(php-片段)
<?php
$servername = "127.0.0.1";
$username = "admin";
$password = "test";
// Create connection
$conn = mysqli_connect($servername, $username, $password);
// Check connection
if (!$conn) {
die("Connection failed: " . mysqli_connect_error());
}
echo "Connected successfully";
?>
我搜索了类似的线程并尝试了 PHP-PDO 等 - 没有任何效果。
我可以通过终端使用以下命令手动登录 mysql-container:
docker 执行 -it bash ,
并通过 "mysql -u root -p " -> 密码登录:test.
解决了。
首先,我通过
获得 运行 mysql 容器的 name/id
docker ps
然后我从命令中得到了一个 ip 地址
docker inspect <name of container> | grep IPAddress
就像这张截图一样。
command from nigel
我也在 docker-compose.yml:
中修改了这一行
volumes:
- /var/lib/mysql:/var/lib/mysql
感谢 Nigel Ren 和 jcorry 的回答。现在一切正常。
我正在尝试设置 docker-容器:Apache/PHP7/Mysql 5.7 通过 docker-compose up on Ubuntu 16.04.
问题是我没有从 index.php (localhost:8080) 获得数据库连接。 如果我尝试连接它说:"Connection failed: Connection refused".
apache-php7 docker文件:https://github.com/nimmis/docker-apache-php7/blob/master/Dockerfile
文件夹是:
apache-php7(包括 Dockerfile)
html(包括index.php)
mysql(mysql数据)
docker-compose.yml:
version: '2'
services:
php:
build: apache_php7
container_name: apache_php7
ports:
- "8080:80"
- "443:443"
volumes:
- ./html:/var/www/html
links:
- db
db:
image: mysql:5.7
container_name: mysql_5_7
volumes:
- ./mysql:/var/lib/mysql
ports:
- "127.0.0.1:3306:3306"
environment:
- MYSQL_ROOT_PASSWORD=test
- MYSQL_USER=admin
- MYSQL_PASSWORD=test
- MYSQL_DATABASE=database
index.php(php-片段)
<?php
$servername = "127.0.0.1";
$username = "admin";
$password = "test";
// Create connection
$conn = mysqli_connect($servername, $username, $password);
// Check connection
if (!$conn) {
die("Connection failed: " . mysqli_connect_error());
}
echo "Connected successfully";
?>
我搜索了类似的线程并尝试了 PHP-PDO 等 - 没有任何效果。
我可以通过终端使用以下命令手动登录 mysql-container: docker 执行 -it bash , 并通过 "mysql -u root -p " -> 密码登录:test.
解决了。 首先,我通过
获得 运行 mysql 容器的 name/iddocker ps
然后我从命令中得到了一个 ip 地址
docker inspect <name of container> | grep IPAddress
就像这张截图一样。
command from nigel
我也在 docker-compose.yml:
中修改了这一行 volumes:
- /var/lib/mysql:/var/lib/mysql
感谢 Nigel Ren 和 jcorry 的回答。现在一切正常。