如何解决Docker创建php开发环境遇到的权限问题
本篇文章主要介绍了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生成的缓存生成的权限,就一致了
问题,就这样子,解决鸟
以上就是本文的全部内容,希望对大家的学习有所帮助,更多相关内容请关注PHP中文网!
Atas ialah kandungan terperinci 如何解决Docker创建php开发环境遇到的权限问题. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Alat AI Hot

Undresser.AI Undress
Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover
Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Undress AI Tool
Gambar buka pakaian secara percuma

Clothoff.io
Penyingkiran pakaian AI

Video Face Swap
Tukar muka dalam mana-mana video dengan mudah menggunakan alat tukar muka AI percuma kami!

Artikel Panas

Alat panas

Notepad++7.3.1
Editor kod yang mudah digunakan dan percuma

SublimeText3 versi Cina
Versi Cina, sangat mudah digunakan

Hantar Studio 13.0.1
Persekitaran pembangunan bersepadu PHP yang berkuasa

Dreamweaver CS6
Alat pembangunan web visual

SublimeText3 versi Mac
Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

Topik panas

Empat cara untuk keluar dari Docker Container: Gunakan Ctrl D di terminal kontena masukkan perintah keluar di terminal kontena Gunakan Docker Stop & lt; container_name & gt; Perintah Gunakan Docker Kill & lt; container_name & gt; Perintah di terminal tuan rumah (keluar kuasa)

Cara memulakan semula bekas Docker: Dapatkan ID Container (Docker PS); Hentikan bekas (Docker Stop & lt; container_id & gt;); Mulakan bekas (Docker Start & lt; container_id & gt;); Sahkan bahawa permulaan semula berjaya (Docker PS). Kaedah lain: Docker mengarang (Docker-Compose Restart) atau Docker API (lihat Dokumentasi Docker).

Proses memulakan MySQL di Docker terdiri daripada langkah -langkah berikut: Tarik imej MySQL untuk membuat dan memulakan bekas, tetapkan kata laluan pengguna root, dan memetakan sambungan pengesahan port Buat pangkalan data dan pengguna memberikan semua kebenaran ke pangkalan data

Kaedah untuk menyalin fail ke tuan rumah luaran di Docker: Gunakan arahan CP Docker: Jalankan Docker CP [Options] & lt; Container Path & GT; & lt; PATH HOST & GT;. Menggunakan jumlah data: Buat direktori pada tuan rumah, dan gunakan parameter -V parameter untuk memasang direktori ke dalam bekas apabila membuat bekas untuk mencapai penyegerakan fail bidirectional.

Anda boleh menanyakan nama kontena Docker dengan mengikuti langkah -langkah: Senaraikan semua bekas (Docker PS). Tapis senarai kontena (menggunakan arahan grep). Mendapat nama kontena (terletak di lajur "Nama").

Langkah -langkah untuk mengemas kini imej Docker adalah seperti berikut: Tarik tag imej terkini imej baru memadam imej lama untuk tag tertentu (pilihan) mulakan semula bekas (jika diperlukan)

Kaedah Melihat Proses Docker: 1. Docker CLI Command: Docker PS; 2. Systemd CLI Command: Sistem Status SistemCTL; 3. Docker mengarang arahan CLI: Docker-Compose PS; 4 Proses Explorer (Windows); 5. /Direktori Proc (Linux).

Anda boleh beralih ke sumber cermin domestik. Langkah -langkah adalah seperti berikut: 1. Edit fail konfigurasi /etc/docker/daemon.json dan tambahkan alamat sumber cermin; 2. Selepas menyimpan dan keluar, mulakan semula perkhidmatan Docker Sudo SystemCtl Docker untuk meningkatkan kelajuan muat turun dan kestabilan imej.
