使用 Docker 多阶段构建部署简单 API 时,会抛出以下错误:
$ docker build -t api:latest .
[...]
$ docker run -p 4880:4880 --rm --name=api api:latest
2019/01/29 23:02:15 exec: "go": executable file not found in $PATH
由于我的应用程序没有go从任何地方(或任何地方exec.Command)调用我运行了一个go mod vendor所以我可以检查依赖源代码并找到以下内容:
vendor/github.com/lib/pq/oid/gen.go
12: "os/exec"
64: cmd := exec.Command("gofmt")
这可能是问题所在吗?如果是,我该如何解决?我确信我之前已经成功地部署了github.com/lib/pq多阶段构建,但我目前被卡住了。
非常感谢,Happy Hacking。
文件
FROM golang:1-alpine AS builder
ENV GO111MODULE=on
RUN apk --no-cache add ca-certificates git
WORKDIR /app
# Copy go module info first...
COPY go.mod .
COPY go.sum .
# ...then download to cache dependencies between builds
RUN go mod download
COPY . .
RUN CGO_ENABLED=0 GOOS=linux GOARCH=amd64 go build -installsuffix cgo -ldflags '-extldflags "-static"' -o api cmd/api/
FROM scratch
WORKDIR /app
COPY --from=builder /app/api /app/
COPY --from=builder /etc/ssl/certs/ca-certificates.crt /etc/ssl/certs/
EXPOSE 8080
ENTRYPOINT ["./api"]
鸿蒙传说
相关分类