这是我的船坞-合成人。
version: "3.1"
services:
mysql:
image: mysql:8.0.13
container_name: project-mysql
volumes:
- ./docker/data/mysql:/var/lib/mysql
environment:
MYSQL_ROOT_PASSWORD: secret
MYSQL_DATABASE: db
MYSQL_USER: dbuser
MYSQL_PASSWORD: secret
ports:
- "3306:3306"
webserver:
image: nginx:alpine
container_name: project-webserver
working_dir: /var/www
volumes:
- .:/var/www
- ./docker/config/nginx/nginx.conf:/etc/nginx/conf.d/default.conf
ports:
- "8080:80"
php-fpm:
build: ./docker/config/php
container_name: project-php-fpm
working_dir: /var/www
volumes:
- .:/var/www
environment:
XDEBUG_CONFIG: remote_host=172.17.0.1
PHP_IDE_CONFIG: serverName=docker问题是php容器无法连接到mysql。虽然我可以从主机连接到mycli -h 127.0.0.1 -P 3306 -u root。但是当我在php容器中执行并尝试它时,就会得到“拒绝连接”。
发布于 2019-06-24 11:18:01
mysql服务将mysql服务器的主机端口3306绑定到3306。因此,您可以从主机连接是正常的。
从php容器内部来看,localhost指的是@David在评论中提到的特定容器。
由于您使用的是docker-compose容器,所以您应该使用服务名称来连接到mysql服务器。
从php容器中尝试如下:
mycli -h mysql -P 3306 -u root
发布于 2019-06-24 10:48:18
您可以与用户root连接。但是在您的停靠-撰写文件中,您正在通过用户dbuser进行连接。如果这不是问题,请告诉我。
发布于 2019-06-24 11:42:41
通常情况下,当请求来自与绑定地址不同的ip时,conenction会拒绝您的请求。下面的尝试应该是有效的。
my.cnf或其他默认配置不会阻止从外部连接(如果在mysql配置中选中bind-address (如果它只允许本地连接表单),我现在会将其设置为0.0.0.0或注释该行(如果存在) mysqld --verbose --help =>您将看到所有选项mysqld --verbose --help | grep bind-address =>检查绑定地址
SELECT user,host FROM mysql.user;),检查您的用户是否可以从停靠网络=> 172.*或anywhere=> %连接。https://stackoverflow.com/questions/56734801
复制相似问题