Как пробросить порт докер контейнера на локаль?

Создаю вот такой контейнер

FROM ubuntu:18.04

WORKDIR "/srv"

COPY --chown=1000 build /srv/bin

EXPOSE 8080

USER 1000
CMD ["/srv/bin/service"]

/srv/bin/service работает на порту 8080 и изнутри контейнера прекрасно запускается через этот порт. Но пробросить на локальную машину этот же порт не могу. Запускаю вот так: docker run --rm --name container-name -p 8080:8080 image захожу на http://localhost:8080/ и у меня ошибка доступа


Ответы (1 шт):

Автор решения: Malcev Pavel

Проблема оказалась в самом сервисе собранном на голенге, а именно в следующем коде.

    router := chi.NewRouter()
    router.Get("/", func(writer gohttp.ResponseWriter, request *gohttp.Request) {
        writer.Write([]byte("Hello World!"))
    })

    httpServer := &http.Server{
        Handler:           router,
        ReadHeaderTimeout: 10 * time.Second,
        Addr:              "localhost:8080",
    }

    if err := httpServer.ListenAndServe(); err != nil {
        zap.L().Fatal("listen", zap.Error(err))
    }

После рефакторинга кода все заработало

    router := chi.NewRouter()
    router.Get("/", func(writer gohttp.ResponseWriter, request *gohttp.Request) {
        writer.Write([]byte("Hello World!"))
    })

    if err := http.ListenAndServe(":8080", router); err != nil {
        zap.L().Fatal("listen", zap.Error(err))
    }

Буду признателен если кто то пояснит почему так происходит.

→ Ссылка