docker compose mysql容器[2002]连接被拒绝

beq87vna  于 2021-06-21  发布在  Mysql
关注(0)|答案(1)|浏览(391)

我正在尝试为nginx+php(laravel)+mysql构建docker compose容器,但是我不断收到连接拒绝错误
docker-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 -u 127.0.0.1 -P 33060 -u root -p

但当我尝试从浏览器访问或将ssh直接导入php容器时,总是出现错误2002。
我在服务器上运行nginx和mysql,所以我使用8080和33060端口,不确定这是否是问题所在。
.环境

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

谢谢你的帮助。

rpppsulh

rpppsulh1#

从这个github问题中得到灵感
我的第一个猜测是,当mysql unix socket文件需要通过非localhost连接时,它正在尝试寻找mysql unix socket文件。如果您使用compose文件启动它们,那么您可以连接到docker提供的dns名称(即links: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 到中的docker容器名称 .env 文件
DB_HOST=docker_mysql_1

相关问题