Intento compartir mi php5-fpm
socket a través de un volumen con mi nginx
servidor web. Fpm y nginx se ejecutan en diferentes contenedores y quiero que funcionen a través de un volumen compartido donde coloco el archivo de socket de 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"
Ya intenté establecer permisos en 777 y cambiar el grupo de php5-fpm.socket
a www-data
.
Dockerfile de contenedor 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 del contenedor 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"]
Puedo acceder al test.html
pero al acceder test.php
obtengo 502 Bad Gateway.
¿Hay algo más que deba preocuparme por los permisos cuando comparto cosas a través de volúmenes?
Respuestas:
Diferentes contenedores no pueden comunicarse entre sí a través de los sockets de dominio UNIX cuando están en diferentes espacios de nombres de red. Hay un parche de kernel no oficial que permite esto, pero usted está solo si lo usa.
fuente
Ahora es 2015 y supongo que el parche del núcleo que menciona Michael ahora ha llegado al núcleo estable. Tengo un ejemplo de trabajo de 2 contenedores docker, uno con php-fpm y el otro con nginx hablando entre sí a través de un socket unix.
Ver: https://github.com/brad-jones/conductor/tree/master/example-project
Sin embargo, la clave para que funcionara era abrir los permisos en el zócalo.
Por ejemplo:
listen.mode = 0777
en /etc/php-fpm.d/www.confNo parecía importar a qué grupo listen.owner & listen.group estuvieran configurados. Supongo que el socket no tenía restricciones, porque un usuario en un contenedor, incluso si tiene el mismo nombre en otro contenedor, todavía se considera un usuario diferente.
fuente
AGREGAR ./test.php /var/test/test.php en el contenedor fpm
Php debe interpretarse para que se muestre, ¿verdad?
fuente