【发布时间】:2023-04-03 19:22:01
【问题描述】:
我正在创建一个 docker golang 映像,但我的 golang 应用程序需要在启动时读取 config.yaml。我尝试添加文件,如下面的 dockerfile 所示:
FROM golang:alpine as builder
# Install git + SSL ca certificates
RUN apk update && apk add git && apk add ca-certificates
# Create appuser
COPY . $GOPATH/src/github.com/user/app/
WORKDIR $GOPATH/src/github.com/user/app/
#get dependancies
RUN go get -d -v
#build the binary
RUN CGO_ENABLED=0 GOOS=linux GOARCH=amd64 go build -o /go/bin/app
# STEP 2 build a small image
# start from scratch
FROM scratch
COPY --from=builder /etc/ssl/certs/ca-certificates.crt /etc/ssl/certs/
ADD ./config.yaml /go/bin/app/
# Copy our static executable
COPY --from=builder /go/bin/app /go/bin/app
EXPOSE 3000
ENTRYPOINT ["/go/bin/app"]
但我收到以下错误:
docker:来自守护进程的错误响应:OCI 运行时创建失败:container_linux.go:348:启动容器进程导致“exec:\”/go/bin/app\“:权限被拒绝”:未知。
【问题讨论】:
-
这个错误很好地解释了这个问题:它无法执行
/go/bin/app,因为权限被拒绝。很可能是未设置执行位。 -
/go/bin/app是一个目录。
标签: docker