[英]How to deal with permissions using docker - nginx / php-fpm
我正在尝试通过 Docker 使用 nginx 和 php-fpm 部署一个非常简单的 Symfony 应用程序。
两个码头服务:
1. web : 运行 nginx
2. php : 运行 php-fpm; 包含应用程序源。
我想构建可以在没有任何外部依赖的情况下部署的图像。 这就是我在php 容器中复制源代码的原因。
关于开发过程; 我正在用本地路径覆盖/var/www/html卷。
# file: php-fpm/Dockerfile
FROM php:7.1-fpm-alpine
COPY ./vendor /var/www/html
COPY . /var/www/html
VOLUME /var/www/html
现在是 docker-compose 配置文件。
# file : docker-compose-prod.yml
version: '2'
services:
web:
image: "private/web"
ports:
- 80:80
volumes_from:
- php
php:
image: "private/php"
ports:
- 9000:9000
问题在于权限。
访问本地主机时,Symfony 正在运行,但缓存/日志/会话文件夹不可写。
我不确定这个问题。 但是我怎么能确定以下几点:
注意:我正在从 MacbookPro 构建图像; 缓存/日志/会话是 777。
docker-compose.yml 支持服务下的user
指令。 文档只在run
命令中提到它,但它的工作原理是一样的。
我有一个类似的设置,这就是我的做法:
# file : docker-compose-prod.yml
version: '2'
services:
web:
image: "private/web"
ports:
- 80:80
volumes_from:
- php
php:
image: "private/php"
ports:
- 9000:9000
user: "$UID"
我必须在运行docker-compose
之前运行export UID
,然后将默认用户设置为我的当前用户。 这允许日志记录/缓存等按预期工作。
我正在使用这个解决方案“Docker for Symfony” https://github.com/StaffNowa/docker-symfony
新功能
./d4d start
./d4s stop
./d4d help
我找到了解决办法; 但是,如果有人可以解释最佳实践,将不胜感激!
来自 docker 上下文的文件夹缓存/日志/会话,其中不为空(在主机上)。
现在文件夹已被刷新,Symfony 以良好的权限创建它们。
我发现有人使用usermod来更改 UID,即:1000 用于 www-data / nginx ......但这似乎是一个丑陋的黑客。 你怎么看?
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.