Завершение Mule-сервера docker: (56) Ошибка при получении: сброс соединения по пиру
Это может быть просто моим новичком в знании Docker, но я не могу заставить работать сеть.
Я пытаюсь запустить Mule-сервер через репозиторий pr3d4t0r/mule. Я могу запускать приложения с горячей заменой, но я могу их достичь.
Я могу запустить локальный сервер без Docker, и он работает без нареканий. Но не тогда, когда я пробую это с Докером.
Когда я пытаюсь сделать простую команду curl, я получаю "curl: (56) Ошибка Recv: сброс соединения по пиру"
curl http://localhost:8090/Sven
Я попытался выставить порты через -P и отдельно через -p 8090:8090, но не повезло.
Когда докер работает, он блокирует порты (я пытался запустить Docker и обычный сервер одновременно, но нормальный сказал, что порты уже используются).
Когда я пытаюсь использовать другой образ, такой как jboss/wildfly, и использую -p 8080:8080, это не проблема, он отлично работает.
Приложение на мул-сервере будет регистрировать и отвечать простым "Привет, мир", в выводе говорится, что приложение развернуто, но никаких сообщений или журналов пока я не пытаюсь достичь.
Какие-либо предложения?
5 ответов
В моем случае это было приложение, которое было настроено неправильно. В качестве хоста был localhost. Это должен был быть 0.0.0.0 без этого, он действовал только на localhost или контейнер Docker, но не снаружи.
Вам не нужно использовать -net=host.
Так что проверьте, есть ли конфигурация
В application.properties нужно установить 0.0.0.0 ip, а не 127.0.0.0.
Ошибка
"curl: (56) Recv failure: Connection reset by peer"
означает, что нет процесса в образе докера, слушающего порт. вариант -p
это привязка порта в хост-системе и образе.
-p <port in container>:<port in host os to be binded to>
Итак, проверьте свое изображение, возможно, ваше приложение в контейнере использует другой порт, и вам нужно
-p 8080:8090
Если у вас есть, прокомментируйте или удалите его, server.address=localhost
в вашем application.properties
Если сюда придет кто-то еще с моей той же проблемой, которая заключалась в попытке запустить веб-приложение Phoenix в Docker, вам придется изменить приложение для запуска http.0.0.0.0
вместо127.0.0.1
в любой конфигурации .exs, на которую вы ориентируетесь. Curl работал, когда меня запускали в контейнер, но не с моего ноутбука. Я изменил следующее вdev.exs
config :reunion_v2, ReunionV2Web.Endpoint,
# Binding to loopback ipv4 address prevents access from other machines.
# Change to `ip: {0, 0, 0, 0}` to allow access from other machines.
http: [ip: {0, 0, 0, 0}, port: 4000],
check_origin: false,
code_reloader: true,
debug_errors: true,
secret_key_base: "my_secret_key_bas",
watchers: [
# Start the esbuild watcher by calling Esbuild.install_and_run(:default, args)
esbuild: {Esbuild, :install_and_run, [:default, ~w(--sourcemap=inline --watch)]}
]