我尝试通过一个卷与我的nginx
networking服务器共享我的php5-fpm
套接字。 Fpm和nginx运行在不同的容器中,我想通过共享卷来从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"
我已经尝试将权限设置为777,并将php5-fpm.socket
组更改为www-data
。
fpm容器的Dockerfile
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"]
nginx容器的Dockerfile
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"]
我可以访问test.html
但访问test.php
我得到502错误的网关。
当通过卷分享内容时,是否还有其他需要关注的权限?
不同的容器在不同的networking命名空间中时,不能通过UNIX域套接字相互通话。 有一个非官方的内核补丁允许这样做,但是如果你使用它,你是自己的。
它现在到了2015年,我认为迈克尔所提到的内核补丁已经成为稳定内核的方式。 我有一个使用php-fpm的2个docker容器的工作示例,另一个使用nginx通过unix套接字相互交谈。
请参阅: https : //github.com/brad-jones/conductor/tree/master/example-project
它工作的关键是打开套接字的权限。
例如: /etc/php-fpm.d/www.conf中的 listen.mode = 0777
这听起来似乎没有什么关系.owner&listen.group被设置为。 套接字需要完全不受限制,我猜是因为在一个容器中的用户,即使它在另一个容器中具有相同的名字仍被认为是不同的用户。
在fpm容器中添加./test.php /var/test/test.php
PHP必须解释为显示,对不对?