【问题标题】:Docker NGINX - PHP-FPM Cross Container Permissions?Docker NGINX - PHP-FPM 跨容器权限?
【发布时间】:2018-07-17 14:19:36
【问题描述】:

我正在设置一个 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 file-permissions docker-volume


    【解决方案1】:

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

    我将以下内容添加到我的 dockerfile 中,它创建了一个新的 www-datagroup AND 用户,其 id 与用于 www-data 用户 82 和组 82 的 id 相同php-fpm 图片。

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

    到我的 nginx docker 文件。

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

    user www-data;
    

    【讨论】:

      猜你喜欢
      • 2021-02-23
      • 1970-01-01
      • 2015-04-08
      • 2021-04-08
      • 1970-01-01
      • 1970-01-01
      • 2016-03-26
      • 2015-07-06
      相关资源
      最近更新 更多