go - 静态页面上的 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 方法一起使用?
谢谢,埃德
解决方案
这里的问题是 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
推荐阅读
- c# - 是否可以在 Xamarin Forms 中的 contentPage 上创建遗产?
- powershell - 如何从 5 次试验中获得最大 CPU 百分比
- django - Django REST EmailAddress 匹配查询不存在
- python - 使用 python 3.6 安装 Gurobi
- powershell - 带有服务帐户的 Powershell Google Sheets API,如何设置范围?
- c# - 单击两次中继器按钮时如何避免计数增加?
- couchdb - 设计文档中的变量
- dart - dart:html WebSocket 与 dart:io WebSocket
- rust - Rust 中的 inet_ntop 等价物
- scala - 为什么cats Bifunctor[F[_, _]].bimap函数中有两个参数组?