我正在尝试使用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会出现问题,但缓存 / 日志 / 会话文件夹不可写。
我不确定这个问题。 但我怎么能确定以下内容:
注意:我正在从MacbookPro构建图像; 缓存/日志/会话是777。
答案 0 :(得分:2)
docker-compose.yml支持服务下的user
指令。文档仅在B
命令中提及它,但它的工作原理相同。
我有类似的设置,这就是我的方式:
A
我必须在运行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"
,然后将默认用户设置为当前用户。这允许日志记录/缓存等按预期工作。
答案 1 :(得分:0)
我找到了解决方案; 但如果有人能够解释最佳实践,那将会很感激!
文件夹缓存/日志/会话来自docker context而非空(在主机上)。
现在文件夹已被刷新,Symfony以良好的权限创建它们。
我发现有人使用 usermod 来更改UID,即:1000为www-data / nginx ... 但它似乎是一个丑陋的黑客。你怎么看?
答案 2 :(得分:0)
我正在使用此解决方案“ Docker for Symfony” https://github.com/StaffNowa/docker-symfony
的新功能
./d4d start
./d4s stop
./d4d help