PHPStorm + docker + xdebug + db ssh 隧道

PHPStorm + docker + xdebug + db ssh 隧道

本地我有以下 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"作为解决方案。

相关内容