You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何用Docker部署搭配MongoDB的WordPress?配置及插件安装求助

使用Docker部署搭配MongoDB的WordPress:问题与解决方案

问题描述

有学生尝试用Docker部署搭配MongoDB的WordPress,当前docker-compose.yml配置如下:

version: "3.9"

services:
  wordpress:
    image: wordpress
    restart: always
    ports:
      - 8080:80
    environment:
      WORDPRESS_DB_HOST: mongo
      WORDPRESS_DB_USER: root
      WORDPRESS_DB_PASSWORD: example
      WORDPRESS_DB_NAME: db
    volumes:
      - wordpress:/var/www/html

  mongo:
    image: mongo
    restart: always
    environment:
      MONGO_INITDB_ROOT_USERNAME: root
      MONGO_INITDB_ROOT_PASSWORD: example

volumes:
  wordpress:
  db:

遇到两个核心问题:

  1. 定义的环境变量未正确同步到生成的wp-config.php,文件内容仍保留默认占位逻辑:
// ** Database settings - You can get this info from your web host ** //
/** The name of the database for WordPress */
define('DB_NAME', getenv_docker('WORDPRESS_DB_NAME', 'wordpress'));

/** Database username */
define('DB_USER', getenv_docker('WORDPRESS_DB_USER', 'example username'));

/** Database password */
define('DB_PASSWORD', getenv_docker('WORDPRESS_DB_PASSWORD', 'example password'));
  1. 不清楚如何在Docker环境中安装MongoDB适配WordPress的必要插件。

解决方案

一、修复环境变量未同步问题

官方WordPress镜像仅在首次启动、wp-config.php不存在时才会生成带环境变量的配置文件。如果已经挂载了持久化卷,旧的配置文件会被保留,导致环境变量不生效。解决方式二选一:

方案1:重置卷重新生成配置

停止并删除现有容器及WordPress卷,重新启动容器时镜像会自动生成正确的配置:

docker-compose down -v
docker-compose up -d

方案2:手动修改wp-config.php

如果需要保留现有WordPress数据,直接进入容器修改配置文件:

  1. 进入WordPress容器:
docker exec -it [你的WordPress容器名称] bash
  1. 编辑/var/www/html/wp-config.php,替换默认的getenv_docker调用为实际值,并新增MongoDB类型定义:
define('DB_NAME', 'db');
define('DB_USER', 'root');
define('DB_PASSWORD', 'example');
define('DB_HOST', 'mongo');
// 关键:指定数据库类型为MongoDB
define('DB_TYPE', 'mongodb');

二、安装MongoDB适配WordPress的插件

WordPress原生不支持NoSQL数据库,必须安装适配插件,常用的是WP MongoDB。以下两种Docker环境下的安装方式:

方式1:自定义Dockerfile构建镜像

通过构建自定义镜像提前预装插件和依赖扩展:

  1. 创建Dockerfile:
FROM wordpress:latest

# 安装PHP MongoDB扩展(插件依赖)
RUN apt-get update && apt-get install -y libssl-dev \
    && pecl install mongodb \
    && docker-php-ext-enable mongodb

# 下载并解压WP MongoDB插件到插件目录
RUN curl -o /tmp/wp-mongodb.zip https://downloads.wordpress.org/plugin/wp-mongodb.latest-stable.zip \
    && unzip /tmp/wp-mongodb.zip -d /usr/src/wordpress/wp-content/plugins/ \
    && rm /tmp/wp-mongodb.zip
  1. 修改docker-compose.yml中wordpress服务的镜像配置,替换为构建指令:
services:
  wordpress:
    build: .
    # 其余环境变量、端口、卷配置保持不变
  1. 构建并启动容器:
docker-compose up --build -d

方式2:容器运行时手动安装

启动容器后直接在容器内安装插件:

  1. 进入WordPress容器:
docker exec -it [你的WordPress容器名称] bash
  1. 下载并安装插件:
cd /var/www/html/wp-content/plugins
curl -o wp-mongodb.zip https://downloads.wordpress.org/plugin/wp-mongodb.latest-stable.zip
unzip wp-mongodb.zip
rm wp-mongodb.zip
  1. 重启容器后,在WordPress后台启用插件。

三、MongoDB服务补充配置

为确保MongoDB正确创建目标数据库并授权,添加初始化脚本:

  1. 创建mongo-init.js文件:
// 创建目标数据库db的读写权限
db.createUser({
  user: "root",
  pwd: "example",
  roles: [ { role: "readWrite", db: "db" } ]
});
// 切换到目标数据库
use db;
  1. 修改docker-compose.yml中mongo服务的配置,挂载初始化脚本:
mongo:
  image: mongo
  restart: always
  environment:
    MONGO_INITDB_ROOT_USERNAME: root
    MONGO_INITDB_ROOT_PASSWORD: example
    MONGO_INITDB_DATABASE: db
  volumes:
    - db:/data/db
    - ./mongo-init.js:/docker-entrypoint-initdb.d/mongo-init.js

最后,启动所有服务后,进入WordPress后台启用MongoDB插件,并在插件设置页确认连接信息与环境变量一致即可完成部署。


内容的提问来源于stack exchange,提问作者Eldar

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.19 05:00:35