我知道很多人都遇到过这个问题,但没有一个答案解决了我的问题。
工作流
- 我在一个Kubernetes集群(GoogleCloud)中运行我的所有dockers。
- 当我在GitHub上的主分支中提交时,我已经设置了编译触发器以自动构建我的dockerfile。
- 然后,我用以下方法更新我的Kubernetes部署:
kubectl set image deployment/MYPROJECT MYPROJECT=eu.gcr.io/foo/MYPROJECT:$TRAVIS_COMMIT
哪儿错了?
我的pod停留在 crashloop back-off,日志:standard_init_linux.go:178: exec user process caused "exec format error"
一点背景
我的工作流程一直工作到2018年6月,我不知道出了什么问题,所以我根据网上的搜索结果,修改了我的dockerfile,更新了我的依赖项,更改了dockerfile的基本图像版本等等,但还是毫无办法。
Dockerfile
FROM golang:1.10-alpine3.7 AS builder
ADD . /go/src/github.com/foo/MYPROJECT
WORKDIR /go/src/github.com/foo/MYPROJECT/api
RUN CGO_ENABLED=0 GOOS=linux GOARCH=amd64 go build -ldflags "-s -w" -a -installsuffix cgo -o /go/bin/api
FROM alpine:3.7
RUN apk --no-cache add ca-certificates
COPY --from=builder /go/bin/api /go/bin/api
COPY --from=builder /go/src/github.com/foo/MYPROJECT/api/sql /go/migrations/sql
COPY --from=builder /go/src/github.com/foo/MYPROJECT/api/.docs/swagger.yml /static/swagger.yml
RUN chmod +x /go/bin/api
ENTRYPOINT ["/go/bin/api"]
[EDIT: 12 June]
当问题出现时,我注意到docker的图像大小从6.3Mo增加到2.3Mo,我怀疑后面还会有新发现,我会继续研究。