docker compose 搭建 wordpress 并解决容器操控挂载目录权限的问题

docker compose 创建 wordpress 容器

docker compose 创建容器的详解包括安装等可以参考DOCKER COMPOSE部署LNMP环境
此处只记录操作方法。

挂载目录准备

挂载目录的准备方式:先run一个辅助容器,把需要挂载的文件夹复制到主机准备好的映射路径,然后删除辅助容器即可。对于 wordpress 推荐在辅助容器里就把初始化流程走完,之后再把配置好的文件复制出来,这样可以先规避后面的权限问题,先把容器正常使用起来。

wordpress:
docker run -it --name wordpress.0 --privileged=true -p your_port:80 -d wordpress
docker cp wordpress.0:/var/www/html/. your_path/wordpress
docker rm wordpress.0

compose 文件编写与容器创建

在你希望存放 compose 文件的地方新建docker-compose.yml并把下列内容编写进去

# Creat container for BLOG
version: '3'
services:
  wordpress:
    image: wordpress:6.5.2
    container_name: wordpress.1
    restart: unless-stopped
    volumes:
      - your_path/wordpress:/var/www/html
    environment:
      - TZ=Asia/Shanghai
    ports:
      - "your_port:80"
    logging:
      driver: json-file
      options:
        max-size: "200k" # 单个文件大小为200k
        max-file: "5" # 最多5个文件

在当前目录运行下面命令即可创建容器,

docker-compose up
#或者
docker-compose up -d

当我们需要修改配置时,就把compose down掉,修改docker-compose.yml文件,然后重启up起来就好。

docker-compose down
docker-compose up -d
#或者
docker-compose up -d --force-recreate

解决 wordpress 容器没有操作外部挂载目录权限的问题

问题描述

由 docker 创建的 wordpress 容器(无论是docker rundocker compose)会遇到没有权限操作挂载在主机上的文件夹的问题,这会导致不止下列问题

  • 初始化时容器无法创建wp-config.php文件,既无法初始化账户;
  • 无法在后台操作插件,因为涉及新建和删除操作;会报错要执行请求的操作,WordPress需要访问您网页服务器的权限。 请输入您的FTP登录凭据以继续。 如果您忘记了您的登录凭据(如用户名、密码),请联系您的网站托管商。

解决方法

修改配置文件
wordpress 的配置文件在your_path/wordpress/wp-config.php,里面有个区域适合添加自己的代码 /* Add any custom values between this line and the "stop editing" line. */,找到这行注释,并在下面添加:

define("FS_METHOD", "direct");
define("FS_CHMOD_DIR", 0777);
define("FS_CHMOD_FILE", 0777);

然后重启容器。

修改挂载路径权限
我们要修改的就是 wordpress 的挂载文件夹,也就是your_path/wordpress

chown -R root your_path/wordpress
chmod -R 775 your_path/wordpress
chmod -R 777 your_path/wordpress

之后再操作插件等,都不会遇到权限不够的问题了。