docker compose MySQL container [2002] Connection拒绝了

时间:2018-05-14 07:39:12

标签: mysql docker

我正在尝试为Nginx + PHP(Laravel)+ MySQL构建docker compose容器,但我一直收到Connection拒绝错误

搬运工-compose.yml

version: "3"
services:

    nginx:
        image: nginx:latest
        ports:
            - '8080:80'
        volumes:
            - ./nginx:/etc/nginx/conf.d
            - ./logs/nginx:/var/logs/nginx
            - ./apps:/var/www/html
        depends_on:
            - php
        restart: always

    php:
        image: laradock/php-fpm:2.2-7.2
        volumes:
            - ./apps:/var/www/html
        restart: always
    mysql:
        image: mariadb
        ports:
            - '33060:3306'
        volumes:
            - ./db:/var/lib/mysql
        environment:
            - MYSQL_ROOT_PASSWORD=root
        restart: always

./apps我有一个全新的Laravel应用程序,基本的SQL设置

所有容器都运行正常,我可以使用

连接到MySQL容器
mysql -u 127.0.0.1 -P 33060 -u root -p

但是当我尝试从浏览器访问或直接将ssh导入php容器时,我一直收到错误2002。

我在服务器上运行了nginx和mysql,因此我使用8080和33060端口,不确定是否存在问题。

.ENV

DB_CONNECTION=mysql
DB_HOST=127.0.0
DB_PORT=3306
DB_DATABASE=homestead
DB_USERNAME=root
DB_PASSWORD=secret

感谢您的帮助。

1 个答案:

答案 0 :(得分:5)

this Github Issue获取想法

  

我的第一个猜测是它正在试图找到mysql unix   套接字文件,当它需要通过非本地主机连接时   连接。如果您使用撰写文件启动它们,那么您   可以连接到docker提供的dns名称(即链接:   docker-mysql,将dns名称设置为docker-mysql)。所以你必须这样做   更改连接线:

     

- php -r "new PDO('mysql:host=localhost;port=3306;charset=utf8', 'root', '123123');"

     

+ php -r "new PDO('mysql:host=docker-mysql;port=3306;charset=utf8', 'root', '123123');"

通过将DB_HOST更改为.env文件中的泊坞窗容器名称来解决此问题

DB_HOST=docker_mysql_1