当我尝试用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" ]
谢谢
发布于 2019-09-05 17:34:01
在此步骤中,您将整个源文件夹复制到目录/app
中:
COPY --from=builder /go/src/ /app
然后尝试执行以下目录:
ENTRYPOINT [ "/app" ]
相反,您需要复制go构建在复制步骤中输出的编译后的二进制文件。
发布于 2019-09-05 17:46:14
您需要指定二进制文件的输出目录。
RUN CGO_ENABLED=0 GOOS=linux GOARCH=amd64 go build -a -o /app .
然后复制应用程序目录
COPY --from=builder /app ./
RUN chmod +x ./app
ENTRYPOINT ["./app"]
发布于 2019-09-09 22:52:37
感谢大家的建议,我解决了这个问题。
我不能只复制正确指定的构建二进制文件
在此之前
COPY --from=builder /go/src/ /app
之后
COPY --from=builder /go/src/build/build_app_name /app
谢谢!!
https://stackoverflow.com/questions/57802199
复制相似问题