我试图部署一个与主机数据库一起工作的Drupal6Docker容器(在将其部署到远程数据库之前出于测试目的),但它就是不想工作,尽管我找到了不同的建议。(特别是在这个来自Docker容器内部的问题中,我如何连接到机器的本地主机?当它谈到主机模式时,所以即使这个问题看起来很像,它也不觉得它是重复的)
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主机:127.0.0.1:8889(mysql端口为8889,我也尝试用localhost替换127.0.0.1),以及正确的用户名、密码和数据库名。
当我仅使用MAMP启动drupal安装时,drupal安装确实可以工作,但尽管docker-compose.yml中有network:host
语句,但在容器中安装时,它似乎无法链接到db
当我尝试执行Trung Duc解决方案时,我在执行docker compose build时遇到以下错误:
services.network_mode必须是映射
不使用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