Я столкнулся с проблемой, пытаясь использовать докер и переадресацию двух портов. В основном у меня есть:
- Докер-контейнер, в котором размещается база данных MySQL, работающая на порту 3306 в контейнере.
- Хост контейнера, где порт XXXX связан с 3306 контейнера командой docker-compose
ports: - XXXX:3306
; Я могу получить доступ к своему контейнеру на хосте с помощью PhpMyadmin. Так что пока все хорошо - Я создаю бридж с прокси-сервером на порту 3336, созданном с помощью команды:
ssh -i key.pem -R 3336:localhost:XXXX ubuntu@IP
- Затем у меня есть клиент (скажем, Mysql Workbench), который подключен к прокси-серверу с помощью другого туннеля:
ssh -i key.pem -L 3306:3336 ubuntu@IP
Я попытался обобщить все на следующем рисунке, где XXXX — это 3306 (зеленая рамка). Когда я пытаюсь подключиться к базе данных с помощью этого довольно сложного метода, мне это удается, когда XXXX=3306. Однако, например, когда XXXX=8701, это больше не работает. У вас есть идеи, почему? Ошибка, которую я получаю, это классический тайм-аут: UnhandledPromiseRejectionWarning: Error: connect ETIMEDOUT
Спасибо заранее за вашу помощь. Лучший, Б