我正在尝试使用 GO 从一个项目向另一个项目发出 http 请求。发出请求的项目具有以下 dockerfile:
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"]
Run Code Online (Sandbox Code Playgroud)
正在等待请求的项目在 localhost:8000 上运行,它具有以下 dockerfile:
FROM golang:1.13.8 AS build-env
ADD . /dockerdev
WORKDIR /dockerdev
RUN go get -d -v ./...
RUN go build -o /server
# Final stage
FROM debian:buster
EXPOSE 8000
WORKDIR /
COPY --from=build-env /server /
CMD ["/server"]
Run Code Online (Sandbox Code Playgroud)
当我做
resp, …Run Code Online (Sandbox Code Playgroud) 我在项目的根目录上有一个文件,我打开它是这样的:
file, err := os.Open("file.csv")
Run Code Online (Sandbox Code Playgroud)
当我go run 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"]
Run Code Online (Sandbox Code Playgroud)
我不习惯 dockerfiles,所以也欢迎任何即兴表演!