PHPStorm + докер + 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. У меня есть удаленная база данных ClickHouse, которая подключена через туннель SSH. Когда я запускаю свой контейнер, я просто захожу в мой контейнер и выполняю:
ssh -4 login@host.com -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-туннель?
UPD Я изменил хост 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, используя network_mode: "host"
в вашем файле в качестве решения.