多路复用器路由器在多克化戈朗项目中不起作用

我在当地进行了测试,它在我的本地工作完全没问题。我可以从邮政,GET方法获得响应。


但是,当我对应用程序进行泊坞化并尝试测试相同的终结点时,我什么也得不到。我已经尝试了这里的所有建议 堆栈溢出.因此,我将粘贴我的泊坞文件和生成文件,以获得您对它的意见。


我的泊坞文件:


FROM golang:1.16.5 AS build-env


RUN set -x \

    && apt-get update -y \

    && apt-get install -y locales \

                          make \

                          xz-utils \

                          zip \

    && rm -rf /var/lib/apt/lists/*


FROM build-env AS builder

WORKDIR /build

COPY . .

RUN set -x \

    && make


FROM debian:buster AS runner


RUN set -x \

    && apt-get update -y \

    && apt-get install -y ca-certificates \

    && rm -rf /var/lib/apt/lists/* \

    && update-ca-certificates


COPY --from=builder /build/bin/* .

CMD ["./applicaitonx"]

和我的生成文件:


build:

    go build -o bin/applicaitonx -v -buildmode=exe .

为了能够构建泊坞,我使用以下命令;


docker build -t app .

然后我运行它。


我看到应用程序正在运行,并且监听和serve根本没有抛出错误。但是多路复用器根本不是路由。它说它听,但它没有。我还将复制以下部分main.go


srv := &http.Server{

    Handler: router,

    Addr: ":" + os.Getenv("PORT"),

}


if err := srv.ListenAndServe(); err != nil {

    log.Fatal("ListenAndServe: ", err)

}

我检查了所有 env 变量,因此不返回空值。我对此很确定。我写了一些调试注释,据我所知,代码甚至没有调试注释。所以它根本不会打印任何东西。os.GetEnv("PORT")


白猪掌柜的
浏览 65回答 1
1回答

郎朗坤

您可能在容器内使用的端口未暴露在外部世界,因此无法访问它们。尝试添加如下所示的标志:-pdocker run -p P1:P2P1 = TCP 端口P2 = 容器端口请参考:此文档
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Go