簡體   English   中英

Docker 上的 Wordpress:無法在裝入的卷上創建目錄

[英]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安裝上, uploadplugins文件夾尚不存在 ,因此當安裝程序嘗試創建plugins/subfolder ,它將拋出錯誤。

如何修復Wordpress / Docker插件安裝權限問題

但是一旦掌握了這個問題,解決這個問題就很容易了。

選項A.

在你的.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 {} \\;

選項B.

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
  • 更新 docker-compose.yaml 以掛載卷
  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 的用戶授予訪問權限; 所有腳本都在主機操作系統上運行:

  • 首先檢查主機上是否存在與 www-data 具有相同 ID 的現有用戶或組:
getent group | grep 82
cat /etc/passwd | grep 82
  • 假設沒有用戶/組沖突,在主機上創建一個組,組 ID 與 docker 中的 www-data 組相同,並將任何需要的用戶添加到該組; 此示例在主機上使用相同的組名:
sudo groupadd -g 82 www-data
sudo usermod -a -G www-data ec2-user
  • 最后,更改文件的組所有權和更新權限,以授予 www-data 組在主機和 docker 上的讀寫權限:
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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM