docker-compose中的“无法连接到本地MySQL服务器”

我有MySQL的Laravel应用程序,我正在尝试使用docker-compose在Docker中运行它。但是,当应用尝试连接数据库时,它会抛出:

Connector.php 55行中的PDOException:SQLSTATE [HY000]

[2002]无法通过套接字’/var/run/mysqld/mysqld.sock’连接到本地MySQL服务器(2)

我的docker-compose.yml:

load_balancer:

image: tutum/haproxy

links:

- web

ports:

- "80:80"

cache:

image: redis

db:

image: mysql

environment:

MYSQL_ROOT_PASSWORD: Q1w2e3r4t5

MYSQL_DATABASE: regappbase

web:

image: andrewmclagan/nginx-hhvm

links:

- db

- cache

volumes:

- ./:/var/www

environment:

- APP_ENV=local

- DB_DATABASE=regappbase

- DB_PASSWORD=Q1w2e3r4t5

- VIRTUAL_HOST=laravel.local

我的.env:

APP_ENV=production

APP_DEBUG=true

APP_KEY=SomeRandomString

APP_URL=http://laravel.local

DB_CONNECTION=mysql

DB_HOST=localhost

DB_PORT=3306

DB_DATABASE=regappbase

DB_USERNAME=root

DB_PASSWORD=Q1w2e3r4t5

CACHE_DRIVER=file

SESSION_DRIVER=file

QUEUE_DRIVER=sync

REDIS_HOST=laravel.local

REDIS_PASSWORD=null

REDIS_PORT=6379

MAIL_DRIVER=smtp

MAIL_HOST=mailtrap.io

MAIL_PORT=2525

回答:

默认情况下,与“ localhost”的MySQL连接会尝试通过本地计算机上存在的套接字进行连接。您的DB_HOST应该是链接的容器名称“ db”。

从MYSQL文档:

在Unix上,MySQL程序特别对待主机名localhost,与其他基于网络的程序相比,它可能与您期望的不同。为了连接到本地主机,MySQL程序尝试使用Unix套接字文件连接到本地服务器。即使给

–port或-P选项指定端口号,也会发生这种情况。为确保客户端与本地服务器建立TCP / IP连接,请使用–host或-

h指定主机名值127.0.0.1,或本地服务器的IP地址或名称。您也可以使用–protocol =

TCP选项来显式指定连接协议,即使是本地主机也是如此。例如:

以上是 docker-compose中的“无法连接到本地MySQL服务器” 的全部内容, 来源链接: utcz.com/qa/434747.html

回到顶部