Docker 创建php 开发环境遇到的权限问题解决方案

简介: 最近我将公司的开发,和测试环境都运行到docker 上面,因为开发,测试基本都是装代码拉到本址,然后,再装目录,挂载到镜像目录中如:我用的是docker-compose # development.

最近我将公司的开发,和测试环境都运行到docker 上面,因为开发,测试基本都是装代码拉到本址,然后,再装目录,挂载到镜像目录中如:我用的是docker-compose

# development.yml
version: '2'
services:
  php-fpm:
    image: jackluo/php-fpm:5.6.3
    restart: always
    volumes:
      - ./www:/var/www/html
      - ./data:/usr/local/var/log
    extra_hosts:
      - "cache.redis.com:192.168.9.111"
      - "192.168.9.111:192.168.9.111"   
  web:
    image: index.alauda.cn/library/nginx
    restart: always
    links:
      - php-fpm
    volumes:
      - ./config:/etc/nginx/conf.d
      - ./data:/var/log/nginx
    volumes_from:
      - php-fpm
    ports:
      - 80:80
    expose:
      - 80

上面的

jackluo/php-fpm:5.6.3 这个是我自己拉的官方镜像下来添加了一些东西,具体在github有 docker-library 里面

目前公司的php 框架用的是 thinkphp ,thinkphp 会生成 缓存文件和目录,php镜像官方的运行用户是www-data,以前的解决方案是只要两个用户一致就可以了,于是,我就在我本地创建了一个www-data的用户如

全部都给的是www-data 权限,再看看Runtime 上面宿主机的生成的是啥权限

 

全部都是33 ,33是啥用户????,我看看docker 里面是啥权限

发现挂载进去的权限是1000,而且php 生成的变成www-data 这个

 

然后我再访问,网页

网页显示 ,没有写入的权限,这个是麻意思呢?

其实,这个问题,困扰了我很久,我一般的解决方案是直接就Runtime 给777的权限,但是,如果是新生成的php页面,每次都要去执行给777的权限,实在感觉不爽,浪迹,http://stackoverflow.com/ 终于找到了解决方案.官方的解决方案是

FROM php:5.6-fpm
RUN usermod -u 1000 www-data

 

如果 你是mac

RUN usermod -u 1000 www-data && usermod -G staff www-data

这样php生成的缓存生成的权限,就一致了 

问题,就这样子,解决鸟

目录
相关文章
|
3月前
|
设计模式 数据库连接 PHP
PHP中的设计模式:提升代码的可维护性与扩展性在软件开发过程中,设计模式是开发者们经常用到的工具之一。它们提供了经过验证的解决方案,可以帮助我们解决常见的软件设计问题。本文将介绍PHP中常用的设计模式,以及如何利用这些模式来提高代码的可维护性和扩展性。我们将从基础的设计模式入手,逐步深入到更复杂的应用场景。通过实际案例分析,读者可以更好地理解如何在PHP开发中应用这些设计模式,从而写出更加高效、灵活和易于维护的代码。
本文探讨了PHP中常用的设计模式及其在实际项目中的应用。内容涵盖设计模式的基本概念、分类和具体使用场景,重点介绍了单例模式、工厂模式和观察者模式等常见模式。通过具体的代码示例,展示了如何在PHP项目中有效利用设计模式来提升代码的可维护性和扩展性。文章还讨论了设计模式的选择原则和注意事项,帮助开发者在不同情境下做出最佳决策。
|
20天前
|
SQL 安全 JavaScript
在多用户环境中,如何确保 PHP Shell 的安全性?
在多用户环境中确保 PHP Shell 安全,需采取限制执行环境、禁用危险函数、使用安全模式、采用 `suPHP` 或 `PHP-FPM`、使用参数化查询、输入验证、转义命令、强化会话管理、合理配置错误处理、正确设置文件权限及定期更新等措施。这些策略有助于防范潜在的安全威胁。
|
1月前
|
缓存 NoSQL PHP
Redis作为PHP缓存解决方案的优势、实现方式及注意事项。Redis凭借其高性能、丰富的数据结构、数据持久化和分布式支持等特点,在提升应用响应速度和处理能力方面表现突出
本文深入探讨了Redis作为PHP缓存解决方案的优势、实现方式及注意事项。Redis凭借其高性能、丰富的数据结构、数据持久化和分布式支持等特点,在提升应用响应速度和处理能力方面表现突出。文章还介绍了Redis在页面缓存、数据缓存和会话缓存等应用场景中的使用,并强调了缓存数据一致性、过期时间设置、容量控制和安全问题的重要性。
40 5
|
2月前
|
网络协议 Docker 容器
docker pull命令拉取镜像失败的解决方案
docker pull命令拉取镜像失败的解决方案
1414 1
|
3月前
|
人工智能 API 数据库
FastGPT一站式解决方案[1-部署篇]:轻松实现RAG-智能问答系统(含sealos云端部署、docker部署、OneAPI&Xinference模型接入)
【9月更文挑战第5天】 FastGPT一站式解决方案[1-部署篇]:轻松实现RAG-智能问答系统(含sealos云端部署、docker部署、OneAPI&Xinference模型接入)
 FastGPT一站式解决方案[1-部署篇]:轻松实现RAG-智能问答系统(含sealos云端部署、docker部署、OneAPI&Xinference模型接入)
|
2月前
|
云安全 存储 小程序
PHP微信小程序解决方案PhpMall
PHP微信小程序解决方案PhpMall
45 0
|
4月前
|
关系型数据库 MySQL 应用服务中间件
win7系统搭建PHP+Mysql+Apache环境+部署ecshop项目
这篇文章介绍了如何在Windows 7系统上搭建PHP、MySQL和Apache环境,并部署ECShop项目,包括安装配置步骤、解决常见问题以及使用XAMPP集成环境的替代方案。
59 1
win7系统搭建PHP+Mysql+Apache环境+部署ecshop项目
|
3月前
|
SQL 安全 JavaScript
在多用户环境中,如何确保 PHP Shell 的安全性?
在多用户环境中,如何确保 PHP Shell 的安全性?
|
4月前
|
网络协议 Linux 网络安全
遇到Docker容器网络隔断?揭秘六种超级实用解决方案,轻松让Docker容器畅游互联网!
【8月更文挑战第18天】Docker容器内网络不通是开发者常遇问题,可能因网络配置错、Docker服务异常或防火墙阻碍等原因引起。本文提供六种解决策略:确认Docker服务运行状态、重启Docker服务、检查与自定义Docker网络设置、验证宿主机网络连接、临时禁用宿主机IPv6及检查防火墙规则。通过这些步骤,多数网络问题可得以解决,确保容器正常联网。
1243 1
|
4月前
|
Web App开发 关系型数据库 PHP
使用 Docker 快速搭建多版本 PHP 开发环境
使用 Docker 快速搭建多版本 PHP 开发环境
95 2