我只是找不到如何正确配置 PHP 和 NGINX 在容器中运行的用户的说明,以便主机系统上的用户有权访问目录和 xwr 文件,并且容器中或容器上都没有问题主持人(如果阅读、编辑、创建)。
我查看了向 Docker 添加项目的各种说明,但到处都忽略了这一点,因此 PHP 仅为所有者创建具有 xwr 权限的目录,导致 NGINX(或 Laravel)在访问文件时返回 404在这些目录中。
NGINX:docker/images/nginx/Dockerfile
FROM nginx:stable-alpine
WORKDIR /var/www/html/public
PHP:docker/images/php/Dockerfile
RUN usermod -u 1000 -a -G www-data www-data
USER www-data
WORKDIR /var/www/html
docker-compose.yml
services:
nginx:
build:
context: docker/images/nginx
volumes:
- './docker/images/nginx/conf.d/default.conf:/etc/nginx/conf.d/default.conf:ro'
- './docker/logs/nginx:/var/log/nginx'
- './source:/var/www/html'
ports:
- 80:80
links:
- php
php:
build:
context: docker/images/php
user: '1000:33'
volumes:
- './source:/var/www/html'
- './docker/logs/php:/var/log/php/'
通过这些带有 nginx 和 php 的容器的配置,Laravel 创建一个具有以下权限和所有者的目录
drwx------ 3 www-data www-data 4096 дек 17 22:10 upload
在这种情况下,将使用以下权限创建此目录中的文件
-rw-r--r-- 1 www-data www-data 17782 дек 17 22:10 sddefault.jpg
我使用该方法创建一个目录和图像
\Illuminate\Support\Facades\Storage::put
如何正确地完成所有操作,以便在读取、写入和执行文件时不会出现问题,请分享您的选择!
