微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

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

我正在尝试使用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,然后将用户设置为当前用户.这允许日志记录/缓存等按预期工作.

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐