我正在编译的Golang服务器上工作,该服务器显示主页,上传页面和文件存储库。它还可以将文件上传到其后端。目的是将其放入容器中并使用。
代码:https://github.com/thatMacAdmin/go-webserver
如果我在本地计算机上执行以下操作:
go run webserver.go
然后它按预期工作。/static/index.html
载入页面。我可以上传文件等(只要存储库位于正确的位置)。但是,当我构建它并将其放在docker容器中时,回购文件列表有效,并且上载终结点存在,但是两个静态html页面均出现404错误。
我究竟做错了什么?为什么http:// localhost:8080不能在容器中显示我的主页,但是它可以与go run方法一起使用?
谢谢,埃德
这里的问题是,/
除非另行说明,否则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