Laravel Docker 容器未连接到本地 mysql

Div*_*pal 3 mysql laravel docker

我在我提到的 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
Run Code Online (Sandbox Code Playgroud)

这在我的 .env 配置中

DB_HOST=localhost
DB_DATABASE=databasename
DB_USERNAME=root
DB_PASSWORD=testpassword
Run Code Online (Sandbox Code Playgroud)

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

小智 9

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

DB_HOST=host.docker.internal
DB_DATABASE=databasename
DB_USERNAME=root
DB_PASSWORD=testpassword
Run Code Online (Sandbox Code Playgroud)

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

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

要解决此,请的值更新bind_address0.0.0.0 您的my.cnf配置文件。


viv*_*d4v 0

我看到两个选择 -

  1. 使用 docker 主机的私有 IP,即运行 mysql 服务器的位置。

  2. 如果您想使用 localhost,请在运行容器时使用主机网络模式。

    docker container --net=host ...