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 run
或docker 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
之后再操作插件等,都不会遇到权限不够的问题了。