当我尝试使用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 builder ADD . /go/src/appname/ WORKDIR /go/src/appname/ ENV GO111MODULE=on COPY go.mod . COPY go.sum . RUN go mod download COPY . . RUN CGO_ENABLED=0 GOOS=linux GOARCH=amd64 make build target=prod FROM alpine RUN apk update \ && apk add --no-cache COPY --from=builder /go/src/ /app ENTRYPOINT [ "/app" ]
谢谢
您将/app在此步骤中将整个源文件夹复制到目录中:
/app
COPY --from=builder /go/src/ /app
然后,您尝试执行目录:
ENTRYPOINT [ "/app" ]
相反,您需要复制go build在复制步骤中输出的已编译二进制文件。