Dockerized приложение генерирует ошибку тайм-аута операции чтения и завершает работу

У меня есть экспресс- приложение, которое получает данные из push-очереди IronMQ. Я Dockerized это приложение и при запуске приложения в контейнере Docker, после некоторого простоя, скажем, 20-30 минут, приложение выдает ошибку и завершает работу:

Error: read tcp 192.168.59.3:50346->192.168.59.103:2376: read: operation timed out

Мой boot2docker ip -> 192.168.59.103

Я переправил порт на 3000.

Я пытался использовать объект процесса, чтобы поймать необработанное исключение, но безрезультатно.

Примечание: я запустил приложение за пределами Docker на своем локальном компьютере, и приложение работает нормально, не выдавая ошибку и не выходя из системы. Так что проблема, похоже, с докером.

1 ответ

Решение

Оказывается, когда вы выполняете команду запуска docker в подключенном режиме, то есть с параметром -a или без параметра -d, что-то вроде:

docker run -a <imageID> или же docker run <imageID>

Docker отсоединяется от контейнера по умолчанию через некоторое время и запускает контейнер в отдельном режиме. Это означает, что ваше приложение работает в фоновом режиме.

Отсюда ошибка: истекло время ожидания

Примечание. Это явно не упоминается в докерской документации, поэтому можно подумать, что это может быть задокументировано здесь для дальнейшего использования.

Другие вопросы по тегам