[英]Wordpress on Docker: Could not create directory on mounted volume
这是路径/var/www/html
上 Wordpress Docker 容器中的原始文件:
$ docker exec 5b957c7b9c5ad054883694afbfb80d3c9df6707458d55011f471be0701f3890c ls -l
total 192
-rw-r--r-- 1 www-data www-data 418 Sep 25 2013 index.php
-rw-r--r-- 1 www-data www-data 19935 Jan 2 18:51 license.txt
-rw-r--r-- 1 www-data www-data 7433 Jan 11 17:46 readme.html
-rw-r--r-- 1 www-data www-data 5447 Sep 27 2016 wp-activate.php
drwxr-xr-x 9 www-data www-data 4096 May 16 21:50 wp-admin
-rw-r--r-- 1 www-data www-data 364 Dec 19 2015 wp-blog-header.php
-rw-r--r-- 1 www-data www-data 1627 Aug 29 2016 wp-comments-post.php
-rw-r--r-- 1 www-data www-data 2764 May 29 22:19 wp-config-sample.php
-rw-r--r-- 1 www-data www-data 3148 May 29 22:19 wp-config.php
drwxr-xr-x 4 www-data www-data 4096 May 16 21:50 wp-content
-rw-r--r-- 1 www-data www-data 3286 May 24 2015 wp-cron.php
drwxr-xr-x 18 www-data www-data 12288 May 16 21:50 wp-includes
-rw-r--r-- 1 www-data www-data 2422 Nov 21 2016 wp-links-opml.php
-rw-r--r-- 1 www-data www-data 3301 Oct 25 2016 wp-load.php
-rw-r--r-- 1 www-data www-data 33939 Nov 21 2016 wp-login.php
-rw-r--r-- 1 www-data www-data 8048 Jan 11 05:15 wp-mail.php
-rw-r--r-- 1 www-data www-data 16255 Apr 6 18:23 wp-settings.php
-rw-r--r-- 1 www-data www-data 29896 Oct 19 2016 wp-signup.php
-rw-r--r-- 1 www-data www-data 4513 Oct 14 2016 wp-trackback.php
-rw-r--r-- 1 www-data www-data 3065 Aug 31 2016 xmlrpc.php
我正在尝试使用已安装的 Docker 卷启动 Wordpress 容器,以便能够持久存储自定义文件:
$ sudo docker run -p 80:80 --link some-mysql:mysql -v /var/www:/var/www/html --name docker-wordpress -d wordpress
问题是,即使在/var/www
中精确复制本地文件的所有权和特权时:
$ sudo chown -R www-data:www-data /var/www
$ sudo find /var/www/ -type d -exec chmod 755 {} \;
$ sudo find /var/www/ -type f -exec chmod 644 {} \;
在容器内运行 Wordpress 时,我仍然收到此类错误:
无法创建目录
如何正确设置权限以确保 Wordpress 能够写入挂载的 Docker 卷?
查看您的错误消息,我得出的结论是您正在尝试安装插件或更新wordpress本身
弄清楚这个问题有点棘手。
执行chown -R www-data:www-data /var/www
来设置正确的用户:组权限应该在技术上解决它,但..
在新的wordpress安装上, upload
& plugins
文件夹尚不存在 ,因此当安装程序尝试创建plugins/subfolder
,它将抛出错误。
但是一旦掌握了这个问题,解决这个问题就很容易了。
在你的.Docker
文件中,在最后但在任何[CMD]
命令之前添加以下内容。
RUN mkdir /var/www/html/wp-content/plugins
RUN mkdir /var/www/html/wp-content/uploads
RUN chown -R www-data:www-data /var/www
RUN find /var/www/ -type d -exec chmod 0755 {} \\;
RUN find /var/www/ -type f -exec chmod 644 {} \\;
ssh到你的docker容器
docker exec -it <container_name> /bin/bash
如果您不知道容器名称,请找到它
docker ps
只需运行与上例相同的命令
$ mkdir /var/www/html/wp-content/plugins
$ mkdir /var/www/html/wp-content/uploads
$ chown -R www-data:www-data /var/www
$ find /var/www/ -type d -exec chmod 0755 {} \\;
$ find /var/www/ -type f -exec chmod 644 {} \\;
基于 Mathias Asberg 的回答,您可以简单地创建 2 个文件夹,即 plugins 和 uploads 将权限更新为 777 并安装卷
脚步:
mkdir plugins uploads
chmod -R 777 plugins uploads
volumes: #
- ./plugins:/var/www/html/wp-content/plugins
- ./uploads:/var/www/html/wp-content/uploads
我有一个类似的问题,我正在使用已安装的卷并希望确保可以在主机操作系统和 WordPress docker 图像上管理文件。
在docker内,WordPress站点以UID为82的用户www-data运行; 这也有一个关联的 www-data 组,组 ID 也是 82。通过在主机操作系统上创建一个与 www-data 具有相同 ID 的组并将组所有权更改为该组,主机和 docker 图像都可以管理文件。
在此示例中,我们添加了在主机操作系统上向名为 ec2-user 的用户授予访问权限; 所有脚本都在主机操作系统上运行:
getent group | grep 82
cat /etc/passwd | grep 82
sudo groupadd -g 82 www-data
sudo usermod -a -G www-data ec2-user
sudo chgrp -R www-data ~/repos/site/html
find ~/repos/site/html -type d -exec chmod 0775 {} \;
find ~/repos/site/html -type f -exec chmod 664 {} \;
这导致 docker 图像中的以下权限,其中主机上的 ec2-user 和具有 docker 的 www-data 都可以读取/写入 html 中的所有文件和文件夹:
bash-5.0# ls -lah
total 248K
drwxrwxr-x 5 1000 www-data 4.0K Apr 25 09:03 .
drwxr-xr-x 3 root root 18 Oct 21 2019 ..
-rw-rw-r-- 1 1000 www-data 405 Apr 23 12:21 index.php
-rw-rw-r-- 1 1000 www-data 19.1K Apr 23 12:21 license.txt
-rw-rw-r-- 1 1000 www-data 7.3K Apr 23 12:21 readme.html
-rw-rw-r-- 1 1000 www-data 7.0K Apr 23 12:21 wp-activate.php
drwxrwxr-x 9 1000 www-data 4.0K Apr 23 12:22 wp-admin
-rw-rw-r-- 1 1000 www-data 351 Apr 23 12:21 wp-blog-header.php
-rw-rw-r-- 1 1000 www-data 2.3K Apr 23 12:21 wp-comments-post.php
-rw-rw-r-- 1 1000 www-data 2.8K Apr 23 12:35 wp-config-sample.php
-rw-rw-r-- 1 1000 www-data 3.4K Apr 23 12:35 wp-config.php
drwxrwxr-x 6 1000 www-data 84 Apr 23 12:22 wp-content
-rw-rw-r-- 1 1000 www-data 3.8K Apr 23 12:22 wp-cron.php
drwxrwxr-x 26 1000 www-data 12.0K Apr 23 12:22 wp-includes
-rw-rw-r-- 1 1000 www-data 2.4K Apr 23 12:22 wp-links-opml.php
-rw-rw-r-- 1 1000 www-data 3.8K Apr 23 12:22 wp-load.php
-rw-rw-r-- 1 1000 www-data 46.8K Apr 23 12:22 wp-login.php
-rw-rw-r-- 1 1000 www-data 8.4K Apr 23 12:22 wp-mail.php
-rw-rw-r-- 1 1000 www-data 22.5K Apr 23 12:22 wp-settings.php
-rw-rw-r-- 1 1000 www-data 31.2K Apr 23 12:22 wp-signup.php
-rw-rw-r-- 1 1000 www-data 4.6K Apr 23 12:22 wp-trackback.php
-rw-rw-r-- 1 1000 www-data 3.2K Apr 23 12:22 xmlrpc.php
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.