【问题标题】:Docker container can't connect to the host machine database [duplicate]Docker容器无法连接到主机数据库[重复]
【发布时间】:2021-03-17 11:20:18
【问题描述】:

我尝试部署一个可与主机数据库一起使用的 drupal 6 docker 容器(用于在将其部署到远程数据库之前进行测试),但尽管遵循了我发现的不同建议,但它只是不想工作。 (特别是在这个问题From inside of 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

docker-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 Host : 127.0.0.1:8889 (mysql端口是8889,我也试过用localhost替换127.0.0.1) 以及正确的用户名、密码和数据库名称。

drupal 安装在我仅使用 MAMP 启动时确实可以工作,但它似乎无法在容器中执行到 db 的链接,尽管 docker-compose.yml 中有 network: host 语句

当我尝试 Do Trung Duc 解决方案时,执行 docker compose build 时出现此错误:

services.network_mode 必须是映射

【问题讨论】:

  • 你试过用物理IP连接数据库吗?

标签: mysql docker drupal-6


【解决方案1】:

不要使用network: host,而是使用network_mode: host。另外,如果您使用network_mode: host,则无需添加ports: - 8080: 80

version: '3.8'

services:
    website:
        build: 
            context: ./drupal-6-lts
    volumes:
        - ./drupal-6-lts:/var/www/html
    network_mode: host

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2019-11-11
    • 2018-01-03
    • 1970-01-01
    • 2019-06-15
    • 2016-04-17
    • 1970-01-01
    • 2021-11-10
    • 2019-02-25
    相关资源
    最近更新 更多