Contêineres diferentes não podem se comunicar por meio de soquetes de domínio UNIX quando estão em namespaces de rede diferentes. Existe um patch não oficial do kernel que permite isso, mas você está por conta própria, se você usá-lo.
Eu tento compartilhar meu soquete php5-fpm
por meio de um volume com meu nginx
webserver. O Fpm e o nginx estão sendo executados em contêineres diferentes e quero que eles funcionem por meio de um volume compartilhado, onde coloco o arquivo de soquete do 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"
Eu já tentei configurar permissões para o 777 e alterar o grupo de php5-fpm.socket
para www-data
.
Dockerfile do contêiner 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 do contêiner 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"]
Eu posso acessar o test.html
, mas ao acessar o test.php
recebo o 502 Bad Gateway.
Há mais alguma coisa em que eu tenha que me importar com permissões ao compartilhar coisas por meio de volumes?
Contêineres diferentes não podem se comunicar por meio de soquetes de domínio UNIX quando estão em namespaces de rede diferentes. Existe um patch não oficial do kernel que permite isso, mas você está por conta própria, se você usá-lo.
Agora é 2015 e eu assumo que o patch do kernel que o Michael mencionou agora entrou no kernel estável. Eu tenho um exemplo de trabalho de dois contêineres docker um com php-fpm e outro com nginx falando um com o outro através de um soquete unix.
Veja: link
A chave para isso foi abrir as permissões no socket.
Exemplo: listen.mode = 0777
em / etc / php-fpm.d / www.conf
Não parecia importar o que ouvir.próprio & listen.group foram definidos para. O socket precisava ser completamente irrestrito, eu acho, porque um usuário em um container, mesmo que tenha o mesmo nome em outro container, ainda é considerado um usuário diferente.
ADD ./test.php /var/test/test.php no contêiner fpm
Php deve ser interpretado para ser exibido, certo?