在 Fedora 31 中,如何在 Podman 容器中设置 nginx 运行 的权限?
In Fedora 31 how do I set permissions for nginx running in a Podman container?
我正在尝试使用 podman-compose 为 Slim-4 项目设置本地开发 LEMP 堆栈。到目前为止,我有 PHP 和 Nginx 的容器。 Nginx 运行但在尝试访问日志目录时出现 500 错误 - 权限被拒绝。此目录在 nginx 提供的 public 目录之外。
我将 selinux 设置为 permissive 以消除它的问题。
我使用 podman unshare 将所有权设置为容器的 Nginx UID:GID。
我尝试仅使用一个简单的索引文件进行设置 - 该文件没有任何问题。因此,nginx/podman 可以访问主机上的 nginx 配置文件。问题一定是写入权限。
这是我的 docker-compose 文件:
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
我错过了什么?
问题是我错误地认为我需要设置权限以允许 Nginx 访问。
相反,我需要授予组 www-data 访问权限。
我是怎么做到的:
登录 运行ning Nginx 容器 podman exec -it [container ID] bash
从容器命令行找到 www-data GID(组 ID),cat /etc/passwd | grep www-data
注意 GID(在结果中你会看到 ...x:33:33...
33:33 是 user:group)
使用 exit
退出容器 cli
在你的 development/host cli 中,在项目的根目录下,运行 podman unshare chown -R 0:[the www-data GID you found above] .
(不要错过 '.')
解释:
podman unshare
将您置于与容器相匹配的修改后的用户空间
chown
更改所有权
-R
表示递归
':'左边的数字是UID(用户ID),右边的数字是GID
这 '。'是当前目录。
我希望这对某人有所帮助。我花了几个小时学习上面的内容。
我正在尝试使用 podman-compose 为 Slim-4 项目设置本地开发 LEMP 堆栈。到目前为止,我有 PHP 和 Nginx 的容器。 Nginx 运行但在尝试访问日志目录时出现 500 错误 - 权限被拒绝。此目录在 nginx 提供的 public 目录之外。
我将 selinux 设置为 permissive 以消除它的问题。 我使用 podman unshare 将所有权设置为容器的 Nginx UID:GID。 我尝试仅使用一个简单的索引文件进行设置 - 该文件没有任何问题。因此,nginx/podman 可以访问主机上的 nginx 配置文件。问题一定是写入权限。
这是我的 docker-compose 文件:
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
我错过了什么?
问题是我错误地认为我需要设置权限以允许 Nginx 访问。
相反,我需要授予组 www-data 访问权限。
我是怎么做到的:
登录 运行ning Nginx 容器 podman exec -it [container ID] bash
从容器命令行找到 www-data GID(组 ID),cat /etc/passwd | grep www-data
注意 GID(在结果中你会看到 ...x:33:33...
33:33 是 user:group)
使用 exit
退出容器 cli
在你的 development/host cli 中,在项目的根目录下,运行 podman unshare chown -R 0:[the www-data GID you found above] .
(不要错过 '.')
解释:
podman unshare
将您置于与容器相匹配的修改后的用户空间
chown
更改所有权
-R
表示递归
':'左边的数字是UID(用户ID),右边的数字是GID
这 '。'是当前目录。
我希望这对某人有所帮助。我花了几个小时学习上面的内容。