gpt4 book ai didi

docker - 为什么我在 docker 中使用 Go 得到 404

转载 作者:行者123 更新时间:2023-12-01 09:50:55 24 4
gpt4 key购买 nike

这是我的 Dockerfile

FROM golang:alpine AS build
RUN apk --no-cache add gcc g++ make git
WORKDIR /go/src/app
COPY . .
RUN go get ./...
RUN GOOS=linux go build -ldflags="-s -w" -o ./bin/web-app ./main.go

FROM alpine:3.9
RUN apk --no-cache add ca-certificates
WORKDIR /usr/bin
COPY --from=build /go/src/app/bin /go/bin
EXPOSE 80
ENTRYPOINT /go/bin/web-app --port 80

这是一个简单的 main.go:
package main

import (
"fmt"
"net/http"
)

func main() {
http.Handle("/", http.FileServer(http.Dir("./public")))
log.Fatal(http.ListenAndServe(":80", nil))
}


公共(public)目录与 main.go 文件位于同一文件夹中。公共(public)目录中有一个 index.html。
当我运行 go run main.go我的网站服务正常。但是使用 Docker,我得到了 404 页面。我怀疑这与将文件放置在 docker 容器内有关。任何帮助表示赞赏。

最佳答案

我认为您需要在 alpine 中创建文件夹容器:

RUN mkdir -p /go/bin/public

并确保该文件夹中有一些东西。

或者您需要从第一个 go 容器中复制文件夹和文件。

并编辑您的 dokcerfile :
WORKDIR /go/bin
ENTRYPOINT web-app --port 80

关于docker - 为什么我在 docker 中使用 Go 得到 404,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58470816/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com