當(dāng)我嘗試使用 docker 構(gòu)建 golang 時(shí)docker的鏡像構(gòu)建成功,但是使用docker run運(yùn)行時(shí)出現(xiàn)如下錯(cuò)誤docker: Error response from daemon: OCI runtime create failed: container_linux.go:345: starting container process caused "exec: \"/app\": permission denied": unknown.我認(rèn)為這個(gè)錯(cuò)誤導(dǎo)致沒有添加用戶,所以我添加了組和用戶,如下所示RUN groupadd -g 10001 myapp \ && useradd -u 10001 -g myapp myapp但沒有修復(fù)。這是我的源 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貢獻(xiàn)1810條經(jīng)驗(yàn) 獲得超4個(gè)贊
您將在此步驟中將整個(gè)源文件夾復(fù)制到目錄中/app
:
COPY --from=builder /go/src/ /app
然后你嘗試執(zhí)行該目錄:
ENTRYPOINT [ "/app" ]
相反,您需要復(fù)制 go build 在復(fù)制步驟中輸出的已編譯二進(jìn)制文件。

蕭十郎
TA貢獻(xiàn)1815條經(jīng)驗(yàn) 獲得超13個(gè)贊
您需要指定二進(jìn)制文件的輸出目錄。
RUN CGO_ENABLED=0 GOOS=linux GOARCH=amd64 go build -a -o /app .
然后復(fù)制app目錄
COPY --from=builder /app ./
RUN chmod +x ./app
ENTRYPOINT ["./app"]

守候你守候我
TA貢獻(xiàn)1802條經(jīng)驗(yàn) 獲得超10個(gè)贊
感謝大家的建議,我解決了這個(gè)問題
我不能只是復(fù)制正確指定的構(gòu)建二進(jìn)制文件
前
COPY --from=builder /go/src/ /app
后
COPY --from=builder /go/src/build/build_app_name /app
謝謝?。?/p>
- 3 回答
- 0 關(guān)注
- 237 瀏覽
添加回答
舉報(bào)
0/150
提交
取消