當我嘗試使用 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
謝謝?。?/p>
- 3 回答
- 0 關注
- 214 瀏覽
添加回答
舉報
0/150
提交
取消