我刚刚在youtube上完成了这个Docker教程:
https://www.youtube.com/watch?v=SXY0MLHP3hA&lc=Ugzp3vKtSOp0rn2lYyd4AaABAg
我能够为PHP和MySQL创建几个Docker容器。文件结构如下:
>Docker_PHP_MySQL
>DB
-Dockerfile
>src
-index.php
>www
-Dockerfile
development.env
docker-compose.yml
DB Dockerfile:
FROM mysql:8.0
index.php文件:
<?php
$mysqli = new mysqli('tut07-db', getenv('MYSQL_USER'), getenv('MYSQL_PASSWORD'), 'information_schema');
if($mysqli->connect_error)
{
echo 'Connection Error [', $mysqli->connect_errno, ']: ', $mysqli->connect_error;
}
else
{
echo 'MySQLi Connected Successfully!';
}
?>
www Dockerfile:
FROM php:7.2-apache
RUN docker-php-ext-install mysqli
RUN docker-php-ext-enable mysqli
这是development.env文件:
MYSQL_USER=sys_admin
MYSQL_PASSWORD=sys_password
MYSQL_ROOT_PASSWORD=root_password
最后,docker-compose.yml文件:
version: "3"
networks:
tut07-frontend:
driver: bridge
ipam:
driver: default
config:
- subnet: 172.10.1.0/24
tut07-backend:
driver: bridge
ipam:
driver: default
config:
- subnet: 172.10.2.0/23
services:
tut07-db:
build: ./db
command: --default-authentication-plugin=mysql_native_password
ports:
- 3306:3306
networks:
tut07-backend:
ipv4_address: 172.10.3.2
env_file:
- ./development.env
tut07-www:
build: ./www
ports:
- 8080:80
volumes:
- ./src:/var/www/html/
networks:
tut07-backend:
ipv4_address: 172.10.2.2
tut07-frontend:
ipv4_address: 172.10.1.2
depends_on:
- tut07-db
env_file:
- ./development.env
现在我知道我完全失明了...
在dbeaver中,我正在尝试建立连接:
但是当我测试连接时,我收到以下响应:
我该如何解决这个问题?
而不是在dbeaver中将localhost_compliant-db
作为服务器主机,尝试给它localhost
。
3306
端口也在主机上绑定,因此主机上的localhost:3306
应该可以工作。
PS - 我认为dbeaver和docker compose堆栈都在同一台机器上。如果没有,您需要将localhost_compliant-db
映射到主机可以理解的某些IP。