mysql - 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 吗?
解决方案
一个更简单的解决方案(对于 Mac OSX 和 Docker for Windows)是将主机地址替换localhost
为host.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_address
to的值。0.0.0.0
my.cnf
推荐阅读
- sql - 如何在 SQL 中跨多个表聚合列值的计数?
- java - 返回硬编码值时 Spring Boot 单元测试不起作用
- laravel-5.8 - 查询生成器。同时使用 Where() 和 With() 方法
- css - 通过拉伸覆盖 SVG 背景
- android - Android ThreeTenAbp 一年中的所有星期都可以排列
- javascript - 我将如何显示由 javascript for 循环生成的内容?
- python - 如何在多列中使用熊猫对python中的行进行排名
- graphql - 如何更改嵌套在graphql数组中的对象的属性值?
- c# - 如何比较两个 xyz 格式的字符串版本号?
- kafka-consumer-api - Kafka Streams:单个应用程序中的多个拓扑