我正在尝试使用nginx& amp;部署一个非常简单的Symfony应用程序. php-fpm通过Docker.
两个码头服务:
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
问题是关于权限.
访问localhost时,Symfony正在进行操作,但缓存/日志/会话文件夹不可写.
> nginx使用/ var / www / html来提供静态文件.
> php-fpm使用/ var / www / html来执行php文件.
我不确定这个问题.
但是我如何确定以下内容:
> / var / www / html必须对nginx可读?
> / var / www / html必须可写为php-fpm吗?
注意:我正在从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之前运行导出UID,然后将默认用户设置为当前用户.这允许日志记录/缓存等按预期工作.