这是我的docker-compose.yml文件:
# ./docker-compose.yml
version: '3'
services:
db:
image: mysql:5.7
environment:
MYSQL_ROOT_PASSWORD: xxx
MYSQL_DATABASE: test_db
MYSQL_USER: abc
MYSQL_PASSWORD: xyz
ports:
- "9906:3306"
web:
build:
context: .
dockerfile: Dockerfile
image: php:7.2.2-apache
container_name: php_web
depends_on:
- db
volumes:
- ./php/:/var/www/html/
ports:
- "8100:80"
stdin_open: true
tty: true
然后我运行docker-compose up --build
并访问http://localhost:8100,并从mysqli收到连接被拒绝的错误。
$mysqli->connect('db', 'abc', 'xyz', 'test_db', 9906);
答案 0 :(得分:2)
您的 docker-compose.yml 文件看起来正确。更改您的PHP连接信息以连接到端口3306(容器),而不是9906(主机)。
<?php
// Use either 3306 or blank.
$link = mysqli_connect("db", "devuser", "devpass", "test_db", 3306);
if (!$link) {
echo "Error: Unable to connect to MySQL." . PHP_EOL;
echo "Debugging errno: " . mysqli_connect_errno() . PHP_EOL;
echo "Debugging error: " . mysqli_connect_error() . PHP_EOL;
exit;
}
echo "Success: A proper connection to MySQL was made! The my_db database is great." . PHP_EOL;
echo "Host information: " . mysqli_get_host_info($link) . PHP_EOL;
mysqli_close($link);
// Output: Success: A proper connection to MySQL was made! The my_db database is great. Host information: db via TCP/IP