Завершение 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)]}
  ]
Другие вопросы по тегам