Docker Wordpress tar:<文件>无法将所有权更改为uid 33,gid 33:不允许操作

时间:2019-01-25 09:23:23

标签: wordpress macos docker apache2

我已经使用Wordpress创建了一个用于本地开发的docker-compose文件,终于使NFS正常工作(由于Docker / Mac问题,正常的卷装速度太慢了。)

除非遇到新问题,否则NFS共享中的所有文件(即wp_content文件夹)都会出现以下错误:

tar: ./wp-content/themes/twentynineteen/archive.php: 
Cannot change ownership to uid 33, gid 33: Operation not permitted

我发现了这个问题https://github.com/docker-library/wordpress/issues/137,他们在其中提到了https://github.com/docker-library/wordpress/pull/249,但是我仍然无法解决它。想知道是否有人可以帮助我,这是我的docker-compose文件:

version: '3.3'

services:
  wordpress:
    image: wordpress:latest
    ports:
      - "80:80"
    restart: always
    volumes:
      - nfsmount:/var/www/html/wp-content
      - ./.htaccess:/var/www/html/.htaccess:cached
      - ./wp-data/wp-config.php:/var/www/html/wp-config.php:cached
      - ./logs/debug.log:/var/www/html/wp-content/debug.log
    environment:
      APACHE_RUN_USER: www-data
      APACHE_RUN_GROUP: www-data

volumes:
  nfsmount:
    driver: local
    driver_opts:
      type: nfs
      o: addr=host.docker.internal,rw,nolock,hard,nointr,nfsvers=3
      device: ":/Users/myuser/Sites/dockertest/wp-data/wp-content" 

3 个答案:

答案 0 :(得分:2)

该错误由尝试更改所有者的tar命令报告。

为了避免tar设置所有者,您可以将变量TAR_OPTIONS设置为--no-same-owner
来自tar manual

  

-没有相同的所有者
            自己提取文件(普通用户默认)。

您可以在您的码头工人,撰写文件,补充一点:

  TAR_OPTIONS: --no-same-owner

答案 1 :(得分:0)

您遇到的问题是您正在使用用户权限而不是www-data来装载本地卷。因此,www-data无法更改用户拥有的文件的权限。要解决此问题,您应该可以执行chown 33:33 -R /Users/myuser/Sites/dockertest/wp-data/wp-content。请记住,如果遇到诸如Permissions denied之类的错误,请使用sudo运行命令。

答案 2 :(得分:0)

首先,您可以尝试将 nocopy 的其他音量选项设置为 True

如果不工作,也许你检查组的 www数据的是一部分。 我认为,如果要将用户和组设置为 www-data ,请确保 www-data 与nfs共享文件夹属于同一组。

否则,最好使用有权访问nfs文件的本地用户和组。

APACHE_RUN_USER  : local_user
APACHE_RUN_GROUP : local_group