Почему при обращении к api сервиса, запущенного в докер контейнере, при ошибке возвращается неполный текст ошибки?
Есть сервис, запущенный на node js в докер контейнере. Если сервис, при обращении к апи этого сервиса, выбрасывает какую либо ошибку (например если я забыл поставить скобку в теле json при передаче запроса), то в ответе я не вижу текста этой ошибки. Т.е. например, при ошибке "SyntaxError: Unexpected token бла-бла in JSON at position 651", в ответ мне вернеться только статус 400 и текст "Bad Request". Если сервис запущен локально вне docker'a, то в ответе мне возвращается полное описание ошибки. Почему так может быть?
Здравствуйте.
Считается нормальным для сервисов иметь два режима для сервисов бэкэнда: дев и прод режимы.
Включенный дев режим (когда вы локально стартуете, это часто по умолчанию дев режим) значит что вы будете получать все возможные логи и все ошибки в ответах.
При запуске в докере, на моей практике весьма часто, по умолчанию ставят прод режим, и сервис работает как на проде - не сообщает об ошибках совершенно
Нода запущена локально точно также как и в докере - без каких либо дополнительных параметров. В консоли внутри контейнера я вижу выбрасываемые ошибки. Если я в коде пропишу самостоятельно ответ вида "res.status(400).json({ message: "какой то текст" })", то я его увижу в ответе апи, если сработает условие заданной мною ошибки. Но если при запросе ошибка была выброшена с помощью throw new Error("текст ошибки"), то я увижу статус ошибки, но текст будет стандартным для этого статуса(т.е. для 400 это буде "bad request").
В самом докере обычно используют 2 разных файла docker-compose.yml. В настройках докера есть какой то параметр, отвечающий за показ выбрасываемых ошибок?