Обработчик действий Hasura не существует (имя или служба неизвестны)
У меня есть экземпляр Hasura, работающий в контейнере Docker, и API обработчика действий, написанный на NodeJS / Express, работающий непосредственно на машине.
Когда я тестирую все локально, он работает как шарм (macOS M1), но когда я реплицирую ту же настройку на сервере (Ubuntu 20.04), он возвращает ошибку обработчика действия не существует.
Все остальные запросы и мутации работают хорошо, только действия возвращают эту ошибку
Вы можете видеть, что оба приложения Hasura и NodeJS работают.
В локальной разработке мой базовый URL-адрес обработчика действий:
и он работает нормально. Я тоже пробовал
http: // локальный:5000 / api
Это точная ошибка, возвращаемая вызовом действия Hasura.
{
"errors": [
{
"extensions": {
"internal": {
"error": {
"type": "http_exception",
"message": "ConnectionFailure Network.Socket.getAddrInfo (called with preferred socket type/protocol: AddrInfo {addrFlags = [], addrFamily = AF_UNSPEC, addrSocketType = Stream, addrProtocol = 0, addrAddress = 0.0.0.0:0, addrCanonName = Nothing}, host name: Just \"host.docker.internal\", service name: Just \"5000\"): does not exist (Name or service not known)"
},
"response": null,
"request": {
"body": {
"session_variables": {
"x-hasura-role": "public"
},
"input": {
"email": "",
"password": ""
},
"action": {
"name": "login"
}
},
"url": "http://host.docker.internal:5000/api/auth/login",
"headers": []
}
},
"path": "$",
"code": "unexpected"
},
"message": "http exception when calling webhook"
}
]
}
1 ответ
Если кто-то столкнется с такой же проблемой, я решил ее так
Добавьте это в файл docker-compose.yml
extra_hosts:
- "host.docker.internal:host-gateway"
Разрешить порты 8080 и 5000 в брандмауэре
sudo ufw allow 8080
sudo ufw allow 5000