Saya mencoba berbagi php5-fpm
soket saya melalui volume dengan nginx
server web saya . Fpm dan nginx berjalan dalam wadah yang berbeda dan saya ingin membuatnya bekerja melalui volume bersama di mana saya menempatkan file socket 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
menjadi www-data
.
Dockerfile dari wadah fpm
FROM ubuntu:13.10
RUN apt-get update
RUN apt-get upgrade -y
RUN apt-get install -y php5-cli php5-common
RUN apt-get install -y php5-fpm php5-cgi
ADD ./php-fpm.conf /etc/php5/fpm/php-fpm.conf
ADD ./pool.d/www.conf /etc/php5/fpm/pool.d/www.conf
ADD ./php.ini /etc/php5/fpm/php.ini
CMD ["/usr/sbin/php5-fpm"]
Dockerfile dari wadah nginx
FROM ubuntu:13.10
RUN apt-get update
RUN apt-get upgrade -y
RUN apt-get install -y nginx
ADD ./test.php /var/test/test.php
ADD ./test.html /var/test/test.html
ADD ./nginx.conf /etc/nginx/nginx.conf
ADD ./site /etc/nginx/sites-enabled/test
EXPOSE 80
CMD ["/usr/sbin/nginx"]
Saya bisa mengakses test.html
tetapi ketika mengakses test.php
saya mendapatkan 502 Gateway Buruk.
Apakah ada hal lain yang harus saya perhatikan tentang izin saat berbagi barang melalui volume?
Jawaban:
Wadah yang berbeda tidak dapat berbicara satu sama lain melalui soket domain UNIX saat berada di ruang nama jaringan yang berbeda. Ada tambalan kernel tidak resmi yang memungkinkan ini, tetapi Anda melakukannya sendiri jika Anda menggunakannya.
sumber
Sekarang di tahun 2015 dan saya berasumsi patch kernel yang disebutkan Michael sekarang telah mencapai kernel stabil. Saya punya contoh kerja 2 kontainer buruh pelabuhan 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.
Misalnya:
listen.mode = 0777
di /etc/php-fpm.d/www.confTampaknya tidak masalah apa yang didengarkan. Pemilik & Dengar. Grup diatur ke. Soket harus benar-benar tidak dibatasi, saya kira karena pengguna dalam satu wadah, bahkan jika memiliki nama yang sama di wadah lain masih dianggap pengguna yang berbeda.
sumber
TAMBAH ./test.php /var/test/test.php dalam wadah fpm
Php harus ditafsirkan untuk ditampilkan, bukan?
sumber