【发布时间】:2016-10-11 15:57:25
【问题描述】:
我有一个 docker compose 文件,它结合了 nginx 和 php,如下所示:
nginx:
image: nginx
ports:
- "80:80"
- "2443:2443"
links:
- phpfpm
volumes:
- ./nginx/anonymous.conf:/etc/nginx/conf.d/anonymous.conf
- ./logs/nginx-error.log:/var/log/nginx/error.log
- ./logs/nginx-access.log:/var/log/nginx/access.log
- ./public:/usr/share/nginx/html
phpfpm:
image: php:fpm
expose:
- "2443"
volumes:
- ./public:/usr/share/nginx/html
我可以在浏览器上看到我的网站,即index.php 页面,其中包含我已经创建的虚拟主机让我们说anonymous.com
现在在我的 phpfpm 容器中,我启动了一个基于 Ratchet 的套接字服务器,它正在侦听端口 2443
// bin/server.php
$webSocketServer = new WsServer(new Chat());
$server = IoServer::factory(
new HttpServer($webSocketServer), 2443);
$server->run();
这就是我在 phpfpm 容器中运行我的服务器的方式
php /usr/share/nginx/html/bin/server.php
我的理解是,因为我已经暴露了2443,并且我的ngnix 和phpfpm 容器是链接的。我可以通过转到telnet anonymous.com 2443 来连接到在phpfpm 容器上运行的套接字服务器
但它没有连接。这是输出
$ telnet anonymous.com 2443
Trying 127.0.0.1...
Connected to localhost.
Escape character is '^]'.
Connection closed by foreign host.
请注意,以前当我将 nginx 和 php-fpm 都放在单个容器上时,一切正常。所以我确信PHP没有任何问题。只是我不知道如何从外部访问套接字服务器。
谢谢
更新
如果我使用我的phpfpm 容器 ip 并通过浏览器将它与端口 2443 一起使用,它工作正常。但问题是我不能依赖容器 ip 作为它的全部动态。
【问题讨论】:
标签: php sockets nginx docker dockerfile