使用拉伸和高山进行多阶段构建

时间:2019-07-19 06:05:07

标签: docker go alpine stretch docker-multi-stage-build

我正在尝试使用-race从拉伸开始构建,然后将其复制到小型高山容器中以减小最终尺寸。但是我在启动时遇到了这个错误:

standard_init_linux.go:211: exec user process caused "no such file or directory"

我的Dockerfile:

FROM golang:1.12.6-stretch as build-env
WORKDIR /goman/
ADD . .
RUN GOFLAGS=-mod=vendor  go test -race -v ./...
RUN CGO_ENABLED=0 GOBIN=/goman/apps/ GOOS=linux GOARCH=amd64 go install -v \
 -a -tags netgo -installsuffix netgo -mod vendor -ldflags "-d -s -w" ./cmd/...


FROM alpine:3.10
RUN apk add --no-cache ca-certificates tzdata
COPY --from=build-env /goman/apps/ /apps
COPY --from=build-env /goman/conf /conf
WORKDIR /apps/

在容器中打开文件时,我可以清楚地看到文件,并且权限正确

1 个答案:

答案 0 :(得分:0)

尝试使用go build代替go install。我认为,在这种情况下,您只需要从源代码构建可执行文件,而无需安装和构建远程可执行文件。