背景
为了安心写点东西,在工具上少折腾,使用了wordpress的官方镜像搭了服务,出于安全考虑,后台管理入口wp-admin
需要做下变更。变更的方式可以是通过wp的插件,也可以通过修改代码。我选了wp插件的方式,尽量不去动原始代码。插件使用WPS Hide Login
,安装的时候报错,installation failed: could not create directory
。
问题分析
看到这个报错信息,第一个想到的就是程序没有权限去创建目录。进入容器看下wp-content下的目录,发现upgrade
、uploads
用户和组都是root
。应该是这个问题了。
# 进容器
docker exec -it blog bash
# 看目录
www-data@134ff00708f0:~/html/wp-content$ ls -trl
total 24
-rw-r--r-- 1 www-data www-data 28 Jan 8 2012 index.php
drwxr-xr-x 6 www-data www-data 4096 Apr 15 02:08 themes
drwxr-xr-x 3 root root 4096 Apr 16 16:31 uploads
drwxr-xr-x 4 www-data www-data 4096 Apr 19 02:49 plugins
drwxr-xr-x 4 root root 4096 Apr 19 02:49 languages
drwxr-xr-x 2 root root 4096 Apr 19 02:49 upgrade
处理
首先我需要使用root用户登录,将问题目录的用户和组( `chown -R www-data:www-data chown -R www-data:www-data uploads upgrade languages` )改过来。
然后再使用正确的用户组( `www-data:www-data` ) 重启docker服务。
docker-compose中指定启动的用户和组的方式如下
services:
wordpress:
image: wordpress:latest
container_name: blog
user: "www-data:www-data"
restart: always
但需要注意的是,由于修改了docker-compose.yml,起停服务需要使用docker-compose down
和 docker-compose up
,而不能使用 `docker-compose restart`。
结果
可以正常安装插件并更改后台管理入口了!
参考阅读
https://medium.com/@mccode/understanding-how-uid-and-gid-work-in-docker-containers-c37a01d01cf
Be First to Comment