Próbuję udostępnić swoje php5-fpm
gniazdo przez wolumin na moim nginx
serwerze internetowym. Fpm i nginx działają w różnych kontenerach i chcę, aby działały przez udostępniony wolumin, w którym umieszczam plik gniazda z 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"
Próbowałem już ustawić uprawnienia na 777 i zmienić grupę php5-fpm.socket
na www-data
.
Plik dokowania kontenera 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"]
Plik Docker kontenera 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"]
Mogę uzyskać dostęp, test.html
ale podczas uzyskiwania dostępu test.php
otrzymuję 502 Bad Gateway.
Czy jest coś jeszcze, o co muszę dbać o uprawnienia podczas udostępniania rzeczy za pośrednictwem woluminów?
Odpowiedzi:
Różne kontenery nie mogą ze sobą rozmawiać przez gniazda domenowe UNIX, gdy znajdują się w różnych sieciowych przestrzeniach nazw. Istnieje nieoficjalna łatka na jądro, która na to pozwala, ale jesteś sam, jeśli jej używasz.
źródło
Jest teraz 2015 i zakładam, że łatka na jądro, o której wspomina Michael, teraz trafiła do stabilnego jądra. Mam działający przykład 2 kontenerów dokujących, jednego z php-fpm, a drugiego z nginx rozmawiającymi ze sobą przez gniazdo unix.
Zobacz: https://github.com/brad-jones/conductor/tree/master/example-project
Kluczem do tego było jednak otwarcie uprawnień do gniazda.
Np .:
listen.mode = 0777
w /etc/php-fpm.d/www.confWydawało się, że nie miało znaczenia, na co ustawiono listen.owner i listen.group. Myślę, że gniazdo musiało być całkowicie nieograniczone, ponieważ użytkownik w jednym kontenerze, nawet jeśli ma taką samą nazwę w innym kontenerze, jest nadal uważany za innego użytkownika.
źródło
DODAJ ./test.php /var/test/test.php w kontenerze fpm
Php musi zostać zinterpretowany, aby zostać wyświetlony, prawda?
źródło