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

如何指定WordPress Docker镜像的文件存放路径?

无需手动下载WordPress源码,实现容器自定义根目录部署

当前你通过Docker Compose + Caddy成功部署了两个WordPress站点,但需要手动下载WordPress源码到宿主机挂载目录,原因是官方WordPress镜像默认只在容器的/var/www/html目录为空时自动解压源码。以下是几种无需手动下载的解决方案:


方案1:调整挂载路径,利用官方镜像自动初始化

这是最简单的方法,核心是让WordPress容器的默认目录(/var/www/html)直接挂载到宿主机对应站点的目录,让镜像自动完成源码解压,再通过环境变量配置WordPress的站点URL。

修改docker-compose.yml中的WordPress服务配置

以第一个站点为例:

wordpress:
  depends_on:
    - db
  image: wordpress:6.1-php8.1-fpm-alpine
  restart: always
  environment:
    WORDPRESS_DB_HOST: db
    WORDPRESS_DB_USER: exampleuser
    WORDPRESS_DB_PASSWORD: examplepass
    WORDPRESS_DB_NAME: exampledb
    # 指定WordPress的站点地址,避免路径错误
    WORDPRESS_CONFIG_EXTRA: |
      define('WP_HOME', 'https://testwp.domain.nl');
      define('WP_SITEURL', 'https://testwp.domain.nl');
  volumes:
    # 将宿主机的站点目录直接挂载到容器默认的/var/www/html
    - ./caddy/sites/testwp/wordpress:/var/www/html

第二个站点同理修改:

wordpress2:
  depends_on:
    - db2
  image: wordpress:6.1-php8.1-fpm-alpine
  restart: always
  environment:
    WORDPRESS_DB_HOST: db2
    WORDPRESS_DB_USER: exampleuser
    WORDPRESS_DB_PASSWORD: examplepass
    WORDPRESS_DB_NAME: exampledb
    WORDPRESS_CONFIG_EXTRA: |
      define('WP_HOME', 'https://testwp2.domain.nl');
      define('WP_SITEURL', 'https://testwp2.domain.nl');
  volumes:
    - ./caddy/sites/testwp2/wordpress:/var/www/html

Caddyfile无需修改

原有的Caddy配置保持不变,因为Caddy挂载的./caddy/sites对应容器内的/var/www/html,站点目录的路径匹配依然有效:

testwp.domain.nl {
        root * /var/www/html/testwp/wordpress
        php_fastcgi wordpress:9000
        file_server
}

testwp2.domain.nl {
        root * /var/www/html/testwp2/wordpress
        php_fastcgi wordpress2:9000
        file_server
}

启动容器后,WordPress镜像会自动将源码解压到/var/www/html(即宿主机的./caddy/sites/testwp/wordpress),无需手动下载。


方案2:自定义启动命令,复制源码到目标目录

如果不想调整挂载路径,可以在容器启动时自动将官方镜像默认目录的源码复制到你指定的目录:

修改docker-compose.yml中的WordPress服务command

wordpress:
  # 其他配置保持不变
  command: sh -c "
    # 检查目标目录是否为空,为空则复制源码
    if [ -z \"$(ls -A /var/www/html/testwp/wordpress)\" ]; then
      cp -r /var/www/html/* /var/www/html/testwp/wordpress/;
    fi;
    # 执行原启动脚本
    exec docker-entrypoint.sh php-fpm
  "
  volumes:
    - ./caddy/sites/testwp/wordpress:/var/www/html/testwp/wordpress

这个方法会在容器第一次启动时复制源码,后续启动因为目标目录已有内容,不会重复复制,避免覆盖自定义配置。


方案3:自定义WordPress镜像(进阶)

如果你需要长期使用自定义根目录,可以基于官方镜像构建自己的镜像,修改初始化脚本的目标目录:

  1. 创建Dockerfile:
FROM wordpress:6.1-php8.1-fpm-alpine

# 复制官方entrypoint脚本并修改
COPY docker-entrypoint.sh /usr/local/bin/
RUN chmod +x /usr/local/bin/docker-entrypoint.sh
  1. 复制官方镜像的docker-entrypoint.sh,找到其中定义WP_ROOT的部分,将WP_ROOT="/var/www/html"改为你需要的目录(比如/var/www/html/testwp/wordpress)。

  2. 构建镜像并在docker-compose中使用自定义镜像。

这个方法适合需要批量部署相同自定义配置的场景,但维护成本较高。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.04 01:00:54