gpt4 book ai didi

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

转载 作者:塔克拉玛干 更新时间:2023-11-03 05:43:30 27 4
gpt4 key购买 nike

我正在尝试通过 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/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com