Здравствуйте
есть тестовый проект (один файлик index.php)
поднимается в докере на vps (убунту) (удаленный сервер)
вот конфиг компоуза
version: '3.1'
services:
webserver:
build:
context: docker
dockerfile: nginx/Dockerfile
working_dir: /application
volumes:
- './:/application'
ports:
- '180:80'
php-fpm:
build:
context: docker
dockerfile: php-fpm/Dockerfile
working_dir: /application
volumes:
- './:/application'
environment:
PHP_IDE_CONFIG: "serverName=example"
networks:
default:
driver: bridge
ipam:
driver: default
config:
- subnet: 172.18.0.0/16
все поднимается, доступно и php отрабатывает
docker inspect контейнера c php показывает
"Gateway" : "172.18.0.1",
"IPAddress" : "172.18.0.2",
что и указано в компоуз файле
Итак, теперь стоит задача отладки (на ноуте phpstorm) этого приложения, соответственно в контейнере установлен xdebug (v3) phpinfo его видит
вот его конфиг
xdebug.idekey=PHPSTORM
xdebug.mode=debug
xdebug.client_host=172.18.0.1
xdebug.remote_port=9003
Те имеем сейчас докер контейнер с установленным php и xdebug
достучаться до него через браузер можем, файлы проекта есть на ноутбуке (прокидываются в докер(volume) через rsync)
работаю в phpstorm там настроил нужные вкладки, все работает (валидация проходит)
Ситуация такая
что при запросе из браузер (с установленной кукой XDEBUGа)
сам xdebug инициализирует соединение на 9003 (из своих настроек) это соединение прокидывается на машину где крутится докер (Ubuntu)
мне нужно создать тунель, что все что пришло на 9003 порт Ubuntu транслировалось на мой ноут, на котором слушает его phpStorm (трубочка), но почему-то у меня не выходит...
как я делаю
1) поднимаю докер
2) прокидываю порт ssh -R 9003:localhost:9003 login@addr
3) ставлю точку останова, "поднимаю трубку" в phpstrom
4) обновляю страницу браузера и ничего
сам xdebug пишет это
Creating socket for '172.18.0.1:9003', poll success, but error: Operation in progress (29).
Could not connect to debugging client. Tried: 172.18.0.1:9003 (through xdebug.client_host/xdebug.client_port) :-(
ноутбук
❯ netstat -nat | grep 9003 | grep LISTEN
tcp46 0 0 *.9003 *.* LISTEN
ubuntu
~/projects/simple$ netstat -an | grep 9003
tcp 0 0 127.0.0.1:9003 0.0.0.0:* LISTEN
Не могу понять, что же я делаю не так
нашел такой вопрос, кажется такая же проблема:
https://qna.habr.com/q/392317
но решение, там написанное, для меня не понятно (слабо понимаю в сетяx, devops терминах)
подскажите у меня все то же самое или нет или же я вовсе все делаю не так и как тога нужно?
те задача отлаживать через xdebug приложение, которое находится в контейнере, который крутится на удаленной машине
Без особого понимания что я делаю, но делал так
на ubuntu
ssh -g -L 9003:localhost:9000 -f -N 127.0.0.1
на ноутбуке с phpstorm (настроил 9000 порт для xdebug)
ssh -R 9000:localhost:9000 vps -v
включаю трубочку, точку останова и расширение браузера, обновляю страницу
в терминале при каждом обновлении страницы это
debug1: client_input_channel_open: ctype forwarded-tcpip rchan 2 win 2097152 max 32768
debug1: client_request_forwarded_tcpip: listen localhost port 9000, originator 127.0.0.1 port 59934
debug1: connect_next: host localhost ([127.0.0.1]:9000) in progress, fd=9
debug1: channel 1: new [127.0.0.1]
debug1: confirm forwarded-tcpip
debug1: channel 1: connection failed: Connection refused
setsockopt TCP_NODELAY: Invalid argument
debug1: connect_next: host localhost ([::1]:9000) in progress, fd=10
debug1: channel 1: connection failed: Connection refused
connect_to localhost port 9000: failed.
debug1: channel 1: free: 127.0.0.1, nchannels 2
debug1: client_input_channel_open: ctype forwarded-tcpip rchan 2 win 2097152 max 32768
debug1: client_request_forwarded_tcpip: listen localhost port 9000, originator 127.0.0.1 port 59940
setsockopt TCP_NODELAY: Invalid argument
debug1: connect_next: host localhost ([127.0.0.1]:9000) in progress, fd=9
debug1: channel 1: new [127.0.0.1]
debug1: confirm forwarded-tcpip
debug1: channel 1: connection failed: Connection refused
setsockopt TCP_NODELAY: Invalid argument
debug1: connect_next: host localhost ([::1]:9000) in progress, fd=10
debug1: channel 1: connection failed: Connection refused
connect_to localhost port 9000: failed.
debug1: channel 1: free: 127.0.0.1, nchannels 2