如何编写Dockerfile创建用于本地测试的自定义Drupal镜像?
自定义本地测试用Drupal Dockerfile配置指南
核心指令配置说明
WORKDIR
设置容器内的工作目录,后续所有指令(RUN/COPY/CMD等)都会基于此路径执行。官方Drupal镜像默认将Drupal代码放在/var/www/html,自定义镜像建议沿用这个路径,避免路径混乱:
WORKDIR /var/www/html
RUN
用于镜像构建阶段执行一次性命令,常见场景包括安装依赖、扩展工具、创建目录等:
- 安装Drupal必需的PHP扩展(比如GD、MySQLi,官方镜像可能未预装):
RUN apt-get update && apt-get install -y libpng-dev libjpeg-dev \ && docker-php-ext-configure gd --with-jpeg \ && docker-php-ext-install gd mysqli - 安装Drush(Drupal命令行管理工具,本地测试必备):
RUN composer require drush/drush --dev - 创建自定义模块/主题/配置文件目录:
RUN mkdir -p modules/custom themes/custom profiles/custom config/sync
CMD
指定容器启动后默认执行的命令,本地测试用Apache镜像的话,直接沿用官方镜像的启动命令即可,保证容器启动后自动运行Web服务:
CMD ["apache2-foreground"]
如果使用PHP-FPM版本的基础镜像,需改为对应启动命令:CMD ["php-fpm"]
完整Dockerfile示例(本地测试用)
# 基于官方Drupal 10 Apache镜像 FROM drupal:10-apache # 设置工作目录 WORKDIR /var/www/html # 安装额外PHP扩展和系统依赖 RUN apt-get update && apt-get install -y \ libpng-dev libjpeg-dev libpq-dev \ && docker-php-ext-configure gd --with-jpeg \ && docker-php-ext-install gd mysqli pdo pdo_mysql \ && apt-get clean && rm -rf /var/lib/apt/lists/* # 安装Drush(通过Composer) RUN composer require drush/drush --dev # 创建自定义目录 RUN mkdir -p modules/custom themes/custom profiles/custom config/sync # 复制本地自定义代码(可选,根据自己需求取消注释) # COPY ./modules/custom/ ./modules/custom/ # COPY ./themes/custom/ ./themes/custom/ # COPY ./config/sync/ ./config/sync/ # 启动Apache服务 CMD ["apache2-foreground"]
额外提示
- 本地测试时,建议通过
docker-compose挂载本地代码目录到容器的/var/www/html/modules/custom等路径,避免每次修改代码都重新构建镜像。 - 如果需要启用HTTPS,可以在RUN阶段配置Apache的SSL证书和虚拟主机配置文件。
内容的提问来源于stack exchange,提问作者Se55
相关产品推荐
相关产品推荐

