php - 如何使用 docker 处理权限 - nginx/php-fpm

标签 php symfony nginx docker docker-compose

我正在尝试通过 Docker 使用 nginx 和 php-fpm 部署一个非常简单的 Symfony 应用程序。

两个 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

关于权限的问题。
当访问本地主机时,Symfony 正在启动,但是 cache/logs/sessions 文件夹不可写。

  1. nginx 使用 /var/www/html 来提供静态文件。
  2. php-fpm 使用 /var/www/html 来执行 php 文件。

我不确定这个问题。 但是我如何确定以下内容:

  1. /var/www/html 必须对 nginx 可读吗?
  2. /var/www/html 对于 php-fpm 必须是可写的?

注意:我正在从 MacbookPro 构建图像; 缓存/日志/ session 为 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 ,然后将默认用户设置为我的当前用户。这允许日志记录/缓存等按预期工作。

关于php - 如何使用 docker 处理权限 - nginx/php-fpm,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45306484/

相关文章:

PHP curl 返回奇怪的字符

php - 如何使用 PHP 和 MySQL 在文本区域中显示最近的两篇文章?

php - Laravel 编辑路由最佳实践

php - Symfony2 中的“网站正在维护”页面

Django REST AngularJS NGINX 配置

php - 按模式解析或拆分或分解 mysql 列

php - 如何在 Symfony2 功能测试中使用经过身份验证的用户?

php - 更新 Symfony 2.1(颠覆)

ruby-on-rails - Rails Assets 管道并从 nginx 提供静态文件

angular - 将Nginx配置为按 Angular 服务器资源文件