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

最近我将公司的开发,和测试环境都运行到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生成的缓存生成的权限,就一致了 

问题,就这样子,解决鸟

时间: 2024-10-11 04:19:02

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

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

最近我将公司的开发,和测试环境都运行到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

搭建基于Docker的PHP开发环境的详细教程

  这篇文章主要介绍了搭建基于Docker的PHP开发环境的详细教程,Docker是当下虚拟机技术的最佳选择,需要的朋友可以参考下 现在很多开发者都使用Vagrant来管理他们的虚拟机开发环境,Vagrant确实很酷, 不过也有不少缺点(最主要的是它占用太多的资源).在容器技术.Docker和更多类Docker技术出现后,解决这个问题就变得简单了. 免责声明 由于boot2docker的工作方式,本文所述的方法在你的环境中可能无法正常运行.如果需要在非Linux环境下共享文件夹到Docker容器

基于Docker的PHP开发环境

本文讲的是基于Docker的PHP开发环境,[编者的话]本文作者是Geoffrey,他是一个PHP的Web开发者,喜欢DevOps和Docker.本文主要介绍了如何使用Docker构建PHP的开发环境,文中作者也探讨了构建基于Docker的开发环境应该使用单容器还是多容器,各有什么利弊.推荐PHP开发者阅读. 现在很多开发者都使用Vagrant来管理他们的虚拟机开发环境,Vagrant确实很酷, 不过也有不少缺点(最主要的是它占用太多的资源).在容器技术.Docker和更多类Docker技术出现

基于 Docker 的 PHP 开发环境

基于 Docker 的 PHP 开发环境 [编者的话]本文作者是Geoffrey,他是一个PHP的Web开发者,喜欢DevOps和Docker.本文主要介绍了如何使用Docker构建 PHP的开发环境,文中作者也探讨了构建基于Docker的开发环境应该使用单容器还是多容器,各有什么利弊.推荐PHP开发者阅读. 现在很多开发者都使用Vagrant来管理他们的虚拟机开发环境,Vagrant确实很酷, 不过也有不少缺点(最主要的是它占用太多的资源).在容器技术.Docker和更多类Docker技术出现

搭建基于Docker的PHP开发环境的详细教程_php技巧

现在很多开发者都使用Vagrant来管理他们的虚拟机开发环境,Vagrant确实很酷, 不过也有不少缺点(最主要的是它占用太多的资源).在容器技术.Docker和更多类Docker技术出现后,解决这个问题就变得简单了.免责声明 由于boot2docker的工作方式,本文所述的方法在你的环境中可能无法正常运行.如果需要在非Linux环境下共享文件夹到Docker容器,还需要注意更多额外的细节.后续我会写篇文章专门来介绍实际遇到的问题.怎样才算是好的开发环境 首先,我们得知道什么才是好的开发环境,

使用 Docker 作为 Python 开发环境 【已翻译100%】

(或者让我们绕过virtualenv) 本文中,我将尝试展示用Docker开发python应用(主要是Web应用)的可行方法.虽然我本人专注于Python的Flask微框架,但本文目的是演示如何通过Docker更好地开发和共享应用程序,(由任何语言和框架开发的应用程序).Docker通过封装依赖项,大大减少了开发环境和正式产品的差距. 大多数Python开发人员在开发中使用virtualenv.它提供了一种易用的机制让应用程序使用自己专用的依赖项,这些依赖项可能与在其它应用程序或操作系统存在冲突

Docker配置PHP开发环境教程_php基础

前言 笔者用的是mac开发,但是mac自带的php功能安装十分不方便,并且和线上的linux开发环境不一致.在没有用docker之前一直用vagrant配置的centos的php开发环境,但是自从有了docker之后,就不再用vagrant了. 配置自己的php镜像 首先在自己的任意一个目录下创建如下三个文件 run.sh #!/bin/bash /usr/sbin/php-fpm7.0 /usr/sbin/nginx tailf /etc/apt/sources.list sources.li

linux中vagrant创建配置开发环境

vagrant解决的问题 稍微有点团队协作开发经验的程序员都应该知道团队协作开发环境是多么的重要,起初的时候,大家的开发环境是windows,max os x,ubuntu,centos等等,我们各个程序员都是那么坚信程序在"我"的机器上是真的正常的.但是就线上就是出了问题,或者A程序员开发环境跑不起来,而且常常提交文件时,由于目录结构的差异,会导致误提交.由于开发环境的异构会导致我们浪费大量的时间去解决这些开发环境的问题. 所以vagrant可以解决上述的问题,可以实现开发环境的跨平

docker搭建oracle开发环境

oracle太大了,对于开发人员来说,在本机安装一个oracle代价不菲. 在docker环境中,我找了很久,发现wnameless/oracle-xe-11g 镜像还不错,很方便搭建起来. 但是也发现一个问题,挂载本地卷遇到了麻烦.一旦挂载,就无法登陆了.从官方的issues中发现,有一个fork版本解决了这个问题,记录一下. 创建docker-compose工作目录 mkdir -p oracle/data cd oracle touch docker-compose.yml 配置docke