Docker NGINX - PHP-FPM 跨容器权限?

Docker NGINX - PHP-FPM Cross Container Permissions?

我正在设置一个 wordpress 堆栈并具有跨文件权限。

当使用docker-compose up权限似乎不是问题但是当使用本地docker swarm和使用docker stack deploy时,nginx给我一个403文件权限错误.在检查 nginx:alpine 容器和 wordpress:php7.1-fpm-alpine 容器时,我确实看到每个容器都有不同的权限,在 nginx 端,它将 var/www/html 内的文件标记为用户拥有并且组 ID 82 而在 php7.1 上它们归 www-data 所有。

如何确保跨容器的权限正确?正在从主机绑定安装文件。

```

version: '3'
services:
  nginx:
    depends_on:
      - wordpress
    image: private/nginx
    build: 
      context: ./stack/nginx
    volumes:
      - "wordpress:/var/www/html"
    ports:
      - 80:80
  wordpress:
    depends_on:
      - mysql
    image: private/wordpress
    build: 
      context: ./stack/wordpress
    volumes:
      - "wordpress:/var/www/html"
    environment:
      WORDPRESS_DB_USER: wordpress
      WORDPRESS_DB_PASSWORD: password
  mysql:
    image: mariadb
    volumes:
      - "mysql:/var/lib/mysql"
    environment:
      MYSQL_ROOT_PASSWORD: password
      MYSQL_DATABASE: wordpress
      MYSQL_USER: wordpress
      MYSQL_PASSWORD: password
volumes:
  wordpress:
    driver: local
    driver_opts:
        type: none
        o: bind
        device: "${PWD}/wordpress"
  mysql:

```

对于遇到此问题但没有解决方案的任何其他人, 这就是我处理这种情况的方式。

我将以下内容添加到我的 docker 文件中,它创建了一个新的 www-data 组和用户,其 id 与用于www-data php-fpm 图像中的用户 82 和组 82

RUN set -x ; \
addgroup -g 82 -S www-data ; \
adduser -u 82 -D -S -G www-data www-data && exit 0 ; exit 1

到我的 docker nginx 文件。

在我的 nginx.conf 中,我将 nginx worker 用户设置为新创建的 ww-data 用户。

user www-data;