首页 > 解决方案 > 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 必须是映射

我也尝试使用我的实际地址,但也无济于事

标签: mysqldockerdocker-composedrupal-6

解决方案


推荐阅读