Berbagi soket unix melalui volume docker - izin ditolak

Saya mencoba untuk berbagi saya php5-fpm socket melalui volume dengan saya nginx webserver. Fpm dan nginx berjalan dalam wadah yang berbeda dan saya ingin membuatnya bekerja melalui volume bersama di mana saya menempatkan file soket dari fpm.

2014/04/13 10:53:35 [crit] 33#0: *1 connect() to unix:/container/fpm/run/php5-fpm.sock failed (13: Permission denied) while connecting to upstream, client: 192.168.8.2, server: docker.dev, request: "GET /test.php HTTP/1.1", upstream: "fastcgi://unix:/container/fpm/run/php5-fpm.sock:", host: "docker.dev"

Saya sudah mencoba mengatur izin ke 777 dan mengubah grup php5-fpm.socket untuk www-data.

Dockerfile dari wadah fpm

FROM ubuntu:13.10RUN apt-get updateRUN apt-get upgrade -yRUN apt-get install -y php5-cli php5-commonRUN apt-get install -y php5-fpm php5-cgiADD ./php-fpm.conf /etc/php5/fpm/php-fpm.confADD ./pool.d/www.conf /etc/php5/fpm/pool.d/www.confADD ./php.ini /etc/php5/fpm/php.iniCMD ["/usr/sbin/php5-fpm"]

Dockerfile dari nginx kontainer

FROM ubuntu:13.10RUN apt-get updateRUN apt-get upgrade -yRUN apt-get install -y nginxADD ./test.php /var/test/test.phpADD ./test.html /var/test/test.htmlADD ./nginx.conf /etc/nginx/nginx.confADD ./site /etc/nginx/sites-enabled/testEXPOSE 80CMD ["/usr/sbin/nginx"]

Saya dapat mengakses test.html tetapi ketika mengakses test.php Saya mendapatkan 502 Bad Gateway.

Apakah ada hal lain yang harus saya pedulikan tentang izin saat berbagi barang melalui volume?

Sekarang 2015 dan saya menganggap patch kernel yang disebutkan Michael sekarang telah masuk ke kernel stabil. Saya memiliki contoh kerja dari 2 kontainer docker satu dengan php-fpm dan yang lainnya dengan nginx berbicara satu sama lain melalui soket unix.

Lihat: https://github.com/brad-jones/conductor/tree/master/example-project

Kunci untuk itu berfungsi adalah membuka izin pada soket.

Eg: listen.mode = 0777 di /etc / php-fpm.d / www.conf

Sepertinya tidak masalah apa yang mendengarkan.pemilik & amp; mendengarkan.kelompok ditetapkan untuk.Soket harus benar-benar tidak dibatasi, saya kira karena pengguna dalam satu wadah, meskipun memiliki nama yang sama di wadah lain masih dianggap sebagai pengguna yang berbeda.

Wadah yang berbeda tidak dapat berbicara satu sama lain melalui soket domain UNIX ketika mereka berada di ruang nama jaringan yang berbeda. Ada sebuah patch kernel tidak resmi itu memungkinkan ini, tetapi Anda sendirian jika menggunakannya.

Tambahkan ./ tes.php / var / uji / uji.php dalam fpm kontainer

Php harus ditafsirkan untuk ditampilkan, kan?

Bagaimana Anda memulai wadah ini?

Periksa izin [pada direktori yang berisi] (c - how can I change the permissions of a linux socket file? - Stack Overflow).