本地我有以下 docker-compose 配置:
nginx:
build:
context: ./nginx
ports:
- "80:80"
volumes:
- ./../logs:/home/web/logs/
- ./../:/home/web/my-website.com/
depends_on:
- php
php:
build:
context: ./php
volumes:
- ./../:/home/web/my-website.com/
working_dir: /home/web/my-website.com/
expose:
- "8123"
php
容器中安装了 xdebug,我可以轻松地从 PHPStorm 连接到它。我有通过 SSH 隧道连接的远程 ClickHouse 数据库。当我启动容器时,我只需进入容器并执行:
ssh -4 [email protected] -p 2211 -L 8123:localhost:8123 -oStrictHostKeyChecking=no -Nf
在此之后,我的网站能够使用此连接,但是当我执行控制台命令时
./yii analysis/start-charts 003b56fe-db47-11e8-bcc0-52540010e5bc 205
从 PHPStorm,我收到一个异常:
Failed to connect to 127.0.0.1 port 8123: Connection refused
如果我跳入容器并启动相同的命令,一切都会正常工作。
出了什么问题?为什么 PHPStorm 看不到我的 ssh 隧道?
更新型多巴胺
我已将 clickhouse 的主机更改为 docker 容器,并将php
容器定义更改为以下内容:
php:
build:
context: ./php
volumes:
- ./../:/home/web/my-website.com/
working_dir: /home/web/my-website.com/
expose:
- "8123"
ports:
- "8123:8123"
现在一切正常
答案1
您的 ssh 隧道是在套接字上的容器内创建的127.0.0.1:8123
。您将端口 8123 暴露给主机(也许您应该暴露 127.0.0.1:8123)。但实际问题是您尝试127.0.0.1:8123
从主机访问,而您应该访问<ContainerIP>:8123
。
您可以尝试更改网络模式在您的撰写文件中使用它network_mode: "host"
作为解决方案。