我正在尝试为一个使用podman-组合的Slim-4项目设置一个本地dev LEMP堆栈。到目前为止,我有用于PHP和Nginx的容器。Nginx运行,但在尝试访问日志目录时出现500错误--权限被拒绝。该目录位于nginx所提供的公共目录之外。
我已经将selinux设置为允许的,以消除其问题。我已经使用podman取消共享来设置容器的Nginx :GID的所有权。我尝试的设置只有一个简单的索引文件-该文件是没有问题的。因此,nginx/podman可以访问主机上的nginx配置文件。问题必须与写权限有关。
这是我的停靠-撰写文件:
version: '3.7'
# Services
services:
# Nginx Service
nginx:
image: nginx:1.17
ports:
- 8090:80
volumes:
- .:/var/www/php:z
- ./.docker/nginx/conf.d:/etc/nginx/conf.d:ro
depends_on:
- php
# PHP Service
php:
image: php:7.4-fpm
working_dir: /var/www/php
volumes:
- .:/var/www/php我遗漏了什么?
发布于 2020-07-19 11:44:46
问题是,我错误地假设我需要设置权限以允许Nginx访问。相反,我需要授予组www-数据访问权限。
我是怎么做到的:
登录到正在运行的Nginx容器podman exec -it [container ID] bash
从容器命令行cat /etc/passwd | grep www-data中查找www-data GID (组ID)
注意GID (在结果中,您将看到类似于...x:33:33... 33:33的内容是user:group)
使用exit退出容器cli
在您的开发/主机cli中,在项目的根处运行podman unshare chown -R 0:[the www-data GID you found above] . (不要错过'.')
解释:
podman unshare将您置于与容器匹配的修改后的用户空间中。
chown改变所有权
-R表示递归
“:”左边的数字是UID (用户ID),右边的数字是GID
“.”是当前目录。
我希望这能帮上忙。我花了几个小时学习上面的内容。
https://stackoverflow.com/questions/62917780
复制相似问题