Обработчик действий Hasura не существует (имя или служба неизвестны)

У меня есть экземпляр Hasura, работающий в контейнере Docker, и API обработчика действий, написанный на NodeJS / Express, работающий непосредственно на машине.

Когда я тестирую все локально, он работает как шарм (macOS M1), но когда я реплицирую ту же настройку на сервере (Ubuntu 20.04), он возвращает ошибку обработчика действия не существует.

Все остальные запросы и мутации работают хорошо, только действия возвращают эту ошибку

Вы можете видеть, что оба приложения Hasura и NodeJS работают.

контейнер докеров hasura

вызов api localhost

В локальной разработке мой базовый URL-адрес обработчика действий:

http://host.docker.internal:5000 / api

и он работает нормально. Я тоже пробовал

http: // локальный:5000 / api

http://127.0.0.1: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
Другие вопросы по тегам