PhpStorm + Docker + Xdebug + DB SSH туннель - PullRequest
0 голосов
/ 11 ноября 2018

Локально у меня есть следующая конфигурация 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 Tunnel. Когда я запускаю свой контейнер, я просто захожу в свой контейнер и выполняю:

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-туннель?

1 Ответ

0 голосов
/ 17 ноября 2018

У меня есть ответ на сайте "superuser": https://superuser.com/questions/1374463/phpstorm-docker-xdebug-db-ssh-tunnel/1375961#1375961

Кроме того, я добавил узел ports в мое определение php контейнера, теперь это следующее:

  php:
    build:
      context: ./php
    volumes:
      - ./../:/home/web/my-website.com/
    working_dir: /home/web/my-website.com/
    expose:
      - "8123"
    ports:
      - "8123:8123"
    depends_on:
      - redis
      - mysql
...