当我尝试使用 docker 构建 golang 时docker的镜像构建成功,但是使用docker run运行时出现如下错误docker: Error response from daemon: OCI runtime create failed: container_linux.go:345: starting container process caused "exec: \"/app\": permission denied": unknown.我认为这个错误导致没有添加用户,所以我添加了组和用户,如下所示RUN groupadd -g 10001 myapp \ && useradd -u 10001 -g myapp myapp但没有修复。这是我的源 docker 文件FROM golang:1.12.9 as builderADD . /go/src/appname/WORKDIR /go/src/appname/ENV GO111MODULE=onCOPY go.mod .COPY go.sum .RUN go mod downloadCOPY . .RUN CGO_ENABLED=0 GOOS=linux GOARCH=amd64 make build target=prodFROM alpineRUN apk update \ && apk add --no-cacheCOPY --from=builder /go/src/ /appENTRYPOINT [ "/app" ]
3 回答
慕莱坞森
TA贡献1810条经验 获得超4个赞
您将在此步骤中将整个源文件夹复制到目录中/app
:
COPY --from=builder /go/src/ /app
然后你尝试执行该目录:
ENTRYPOINT [ "/app" ]
相反,您需要复制 go build 在复制步骤中输出的已编译二进制文件。
萧十郎
TA贡献1815条经验 获得超13个赞
您需要指定二进制文件的输出目录。
RUN CGO_ENABLED=0 GOOS=linux GOARCH=amd64 go build -a -o /app .
然后复制app目录
COPY --from=builder /app ./
RUN chmod +x ./app
ENTRYPOINT ["./app"]
守候你守候我
TA贡献1802条经验 获得超10个赞
感谢大家的建议,我解决了这个问题
我不能只是复制正确指定的构建二进制文件
前
COPY --from=builder /go/src/ /app
后
COPY --from=builder /go/src/build/build_app_name /app
谢谢!!
- 3 回答
- 0 关注
- 179 浏览
添加回答
举报
0/150
提交
取消