登录
首页 >  Golang >  Go问答

无法通过 Dockerfile 打开 Golang 文件

来源:stackoverflow

时间:2024-02-23 15:30:28 221浏览 收藏

学习知识要善于思考,思考,再思考!今天golang学习网小编就给大家带来《无法通过 Dockerfile 打开 Golang 文件》,以下内容主要包含等知识点,如果你正在学习或准备学习Golang,就都不要错过本文啦~让我们一起来看看吧,能帮助到你就更好了!

问题内容

我的项目根目录下有一个文件,我按如下方式打开它:

file, err := os.open("file.csv")

当我让 go 运行 main.go 时,它可以工作。当我使用 dockerfile 运行应用程序时,它不起作用:

打开 file.csv:没有这样的文件或目录

我的dockerfile是这样的:

FROM golang:alpine as builder
RUN mkdir /build 
ADD . /build/
WORKDIR /build 
RUN CGO_ENABLED=0 GOOS=linux go build -a -installsuffix cgo -ldflags '-extldflags "-static"' -o main .
FROM scratch
COPY --from=builder /build/main /app/
WORKDIR /app
CMD ["./main"]

我不习惯 dockerfile,因此也欢迎任何即兴改进!


解决方案


copy --from=builder /build/main /app/ 行中,您仅复制可执行文件。您不复制应用程序目录。将该行替换为 copy --from=builder /build /app/

下面我提供了一个如何编写此 dockerfile 的示例。以下是一些关键变化。

  • copy 指令之前定义 workdir,这样就不会两次写入目录名称。这很有帮助,因为如果您想更改应用程序目录,只需更改一次(这意味着出现错误的可能性更小)。
  • 使用 copy 而不是 addDockerfile reference表示首选copy
  • 在使用 workdircopy 之前,您不必使用 run mkdir /build。如果目录尚不存在,最后两条指令将创建该目录。
FROM golang:alpine as builder
WORKDIR /build
COPY . .
RUN CGO_ENABLED=0 GOOS=linux go build -a -installsuffix cgo -ldflags '-extldflags "-static"' -o main .
FROM scratch
WORKDIR /app
COPY --from=builder /build .
CMD ["./main"]

以上就是《无法通过 Dockerfile 打开 Golang 文件》的详细内容,更多关于的资料请关注golang学习网公众号!

声明:本文转载于:stackoverflow 如有侵犯,请联系study_golang@163.com删除
相关阅读
更多>
最新阅读
更多>
课程推荐
更多>