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生成的緩存生成的權限,就一致了 

問題,就這樣子,解決鳥


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM