PHPStorm + докер + xdebug + db ssh туннель

564
Nikita Leshchev

Локально у меня есть следующая конфигурация 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" 

Теперь все работает

0

1 ответ на вопрос

1
Ben

Ваш ssh-туннель создан внутри вашего контейнера на сокете 127.0.0.1:8123. Вы открываете порт 8123 для хоста (возможно, вам следует выставить 127.0.0.1:8123). Но настоящая проблема заключается в том, что вы пытаетесь получить доступ 127.0.0.1:8123с вашего хост-компьютера, тогда как вы должны получить доступ <ContainerIP>:8123.

Вы можете попробовать изменить network_mode, используя network_mode: "host"в вашем файле compose решение.

Спасибо за ваш ответ, это помогло мне. Но я должен добавить, что мне пришлось добавить узел `ports` в определение контейнера` php`. Я добавляю это изменение к вопросу Nikita Leshchev 5 лет назад 1