首页 > 解决方案 > Laravel Docker 容器未连接到本地 mysql

问题描述

我在我提到的 DockerFile 中连接到在本地机器上运行的 mysql 时遇到问题

FROM php:7
RUN apt-get update -y && apt-get install -y openssl zip unzip git
RUN curl -sS https://getcomposer.org/installer | php -- --install-dir=/usr/local/bin --filename=composer
RUN docker-php-ext-install pdo mbstring pdo_mysql
WORKDIR /home
COPY . /home
RUN composer install --ignore-platform-reqs

CMD php artisan serve --host=0.0.0.0 --port=8081
EXPOSE 8081

这在我的 .env 配置中

DB_HOST=localhost
DB_DATABASE=databasename
DB_USERNAME=root
DB_PASSWORD=testpassword

我对失败的地方知之甚少。我还需要为 Docker 容器安装 mysql 吗?

标签: mysqllaraveldocker

解决方案


一个更简单的解决方案(对于 Mac OSX 和 Docker for Windows)是将主机地址替换localhosthost.docker.internal

DB_HOST=host.docker.internal
DB_DATABASE=databasename
DB_USERNAME=root
DB_PASSWORD=testpassword

基本上,DNS 名称host.docker.internal将解析为主机使用的内部 IP 地址。

注意:如果您将地址更改为,host.docker.internal但仍然收到connection refused错误消息,很可能是因为 MySQL 当前配置为仅侦听本地网络。

要解决此问题,请 在配置文件中更新bind_addressto的值。0.0.0.0my.cnf


推荐阅读