【问题标题】:How to deal with permissions using docker - nginx / php-fpm如何使用 docker 处理权限 - nginx / php-fpm
【发布时间】:2020-01-29 07:42:26
【问题描述】:

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

两个 docker 服务:
1. 网络:运行 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 正在启动,但 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 构建图像; 缓存/日志/会话是 777。

【问题讨论】:

  • 如果您没有在php 服务中指定任何卷,volumes_from 会做什么?

标签: php symfony nginx docker docker-compose


【解决方案1】:

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,然后将默认用户设置为我的当前用户。这允许日志记录/缓存等按预期工作。

【讨论】:

  • 我想知道如何通过删除 volumes_from 并使用版本 3 卷配置来使这个解决方案成为最新的。
【解决方案2】:

我正在使用这个解决方案“Docker for Symfony”https://github.com/StaffNowa/docker-symfony

新功能

./d4d start
./d4s stop
./d4d help

【讨论】:

    【解决方案3】:

    我找到了解决方案; 但是,如果有人可以解释最佳做法,将不胜感激!

    文件夹缓存/日志/会话来自 docker 上下文不为空(在主机上)。
    现在文件夹已被刷新,Symfony 以良好的权限创建它们。

    我发现有人使用 usermod 来更改 UID,即:1000 用于 www-data / nginx ... 但这似乎是一个丑陋的黑客。你怎么看?

    【讨论】:

    • 如果你有一个可行的解决方案,如果你能分享它会很好:) 我希望至少一些代码也需要复制到 nginx 映像中。
    • 这没什么用
    猜你喜欢
    • 2018-07-17
    • 2015-04-08
    • 1970-01-01
    • 1970-01-01
    • 2016-09-08
    • 2016-03-26
    • 2021-04-22
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多