mysql - Docker 容器无法连接到宿主机数据库
问题描述
我尝试部署一个与主机数据库一起使用的drupal 6 docker容器(用于在将其部署到远程数据库之前进行测试),但是尽管遵循了我发现的不同建议,它还是不想工作。(特别是在这个问题From inside a Docker container, how do I connect to the localhost of the machine?当它谈到主机模式时,所以即使问题看起来很像它也不觉得它是重复的)
Dockerfile
FROM php:7.3-apache
COPY . /var/www/html
EXPOSE 80
RUN chmod o+w /var/www/html/sites/default/settings.php &&\
chmod o+w /var/www/html/sites/default/files &&\
apt-get update &&\
apt-get install -y libfreetype6-dev libjpeg62-turbo-dev libpng-dev &&\
docker-php-ext-configure gd --with-freetype-dir=/usr/include/ --with-jpeg-dir=/usr/include/ &&\
docker-php-ext-install mysqli gd mbstring pdo pdo_mysql &&\
docker-php-ext-enable mysqli
码头工人-compose.yml
version: '3.8'
services:
website:
build:
context: ./drupal-6-lts
network: host
volumes:
- ./drupal-6-lts:/var/www/html
ports:
- 8080:80
对于数据库连接,我指定了这些设置:
驱动:mysqli 主机:127.0.0.1:8889(mysql端口是8889,我也试过用localhost替换127.0.0.1)以及正确的用户名、密码和数据库名。
network: host
当我仅使用 MAMP 启动 drupal 时,它的安装确实有效,但是尽管docker-compose.yml 中有声明,但它似乎无法在容器中执行到 db 的链接
我也试过这个 docker-compose.yml :
version: '3.8'
services:
website:
build:
context: ./drupal-6-lts
volumes:
- ./drupal-6-lts:/var/www/html
network_mode: host
但是在执行 docker compose build 时出现此错误:
services.network_mode 必须是映射
我也尝试使用我的实际地址,但也无济于事
解决方案
推荐阅读
- python - 在 Python 中比较相同的图像
- c - 计算 C 关键字中的出现次数:getch() 未返回正确值的问题
- python - 如何在数据帧上执行分组和求和。我有一个 Dataframe1 我想像这样转换成 Dataframe2
- java - 为什么它说类 dog 中的构造函数 dog 不能应用于给定类型?它似乎运行但抛出错误,这是为什么呢?
- python - 程序成功执行,退出代码为 0,但没有打印任何内容
- grafana - zabbix 图表仅适用于 6 小时的时间范围?
- java - 如何在 JavaFX 中从另一个场景编辑一个场景中的标签
- python - 具有多个输出和自定义损失函数的模型
- python - 如何使用 Tkinter 应用程序只保存填写的条目小部件而不将空的条目小部件保存在文本文件中?
- javascript - 使用 jQuery 的风格化工具提示