我正在Go中构建一个小型的基本Web服务器。如果我在本地编译并运行它,它工作得很好 - 没有问题。页面显示,可以从本地主机访问,样式完好无损 - 一切都很好。
如果我在Docker容器中执行此操作,则它不起作用。它返回“404 页未找到”。就像它没有任何静态资产一样...但这肯定不可能 - 静态资产有意嵌入到二进制文件中,使用“//go:embed”...正如我所说,如果你在本地构建和运行,它工作正常。
我已经尝试了我能想到的一切...下面列出的一些步骤:
各种不同的 docker 映像(alpine、ubuntu、golang、golang alpine 等)
使用go:以不同的方式嵌入,即不同的模式
我把一些基本的登录到服务器代码...但它似乎没有返回任何错误,所以没有帮助
更改的端口/地址
这只是我尝试过的一些东西,没有运气。
我已经排除了下面的css,它并不真正相关,因为索引页面甚至没有显示任何样式。
代码: 服务器代码
DOCKERFILE:
FROM golang:1.16.0-alpine3.13 AS build
WORKDIR /app
COPY . .
RUN go build -o server .
FROM golang:1.16.0-alpine3.13
WORKDIR /app
COPY --from=build /app/server .
EXPOSE 8080
CMD ["./server"]
网页:
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>GOOO</title>
<link rel="stylesheet" href="/assets/static/css/style.css">
</head>
<body>
<h1>GO!!!</h1>
</body>
</html>
目录结构:
├── Dockerfile
├── go.mod
├── go.sum
├── server.go
├── server_test.go
├── static
│ ├── css
│ │ └── style.css
│ └── index.html
梵蒂冈之花
相关分类