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;
我正在设置一个 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;