首页 > 解决方案 > 静态页面上的 Golang Server 404

问题描述

我正在编译一个显示主页、上传页面和文件存储库的 Golang 服务器。它还可以将文件上传到其后端。目标是将其放入容器中并使用它。

代码:https ://github.com/thatMacAdmin/go-webserver

如果我在本地机器上执行以下操作: go run webserver.go

然后它按预期工作。加载中的页面/static/index.html。我可以上传文件等(只要 repo 存在于正确的位置)。但是,当我构建它并将其放入 docker 容器中时,repo 文件列表有效,并且上传端点存在,但是两个静态 html 页面出现 404 错误。

我究竟做错了什么?为什么 http://localhost:8080 不能在容器中显示我的主页,但它可以与 go run 方法一起使用?

谢谢,埃德

标签: goserverstatic

解决方案


这里的问题是 Docker 将/其用作其相对路径,除非您另有说明。在这种情况下,我的代码期望相对路径是我的服务器二进制文件所在的位置。就我而言:

/server

在我的 Dockerfile 中正确设置 WORKDIR 选项解决了这个问题。

例子:

FROM alpine:latest
RUN mkdir -p /server/static
COPY webserver /server
COPY static /server/static
WORKDIR /server
ENTRYPOINT ["/server/webserver"] 
EXPOSE 8080

推荐阅读