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

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" в вашем файле compose в качестве решения.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .