第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時綁定郵箱和手機(jī)立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

將 Go 服務(wù)器作為 Docker 容器運(yùn)行時出現(xiàn)權(quán)限被拒絕錯誤

將 Go 服務(wù)器作為 Docker 容器運(yùn)行時出現(xiàn)權(quán)限被拒絕錯誤

Go
汪汪一只貓 2023-08-21 14:35:34
我想將我的 Go 服務(wù)器部署到 Google Cloud Run。我從本指南復(fù)制了 Dockerfile 。FROM golang:1.13 as builderWORKDIR /appCOPY go.* ./RUN go mod downloadCOPY . ./RUN CGO_ENABLED=0 GOOS=linux go build -v -o serverRUN chmod a+x serverFROM alpine:3RUN apk add --no-cache ca-certificatesCOPY --from=builder /app/server /serverCMD ["/server"]在將其部署到 Cloud Run 之前,我想通過使用 構(gòu)建映像并docker build -t server .運(yùn)行容器來在本地測試它docker run server。它失敗并出現(xiàn)以下錯誤:docker: Error response from daemon: OCI runtime create failed: container_linux.go:346: starting container process caused "exec: \"/server\": permission denied": unknown.感謝您的幫助。
查看完整描述

3 回答

?
Helenr

TA貢獻(xiàn)1780條經(jīng)驗(yàn) 獲得超4個贊

潛在問題1

如果更改alpinedebian適合您,則意味著這是交叉編譯的問題。

golang映像基于 debian,并使用 glibc,alpine映像使用 musl libc。有時,它們不兼容,并會出現(xiàn)最糟糕的錯誤消息。

所以我懷疑這不是 Cloud Run 問題,而是之前的問題。


潛在問題2

類似的事情曾經(jīng)發(fā)生在我身上,結(jié)果證明我正在構(gòu)建的包不是?package main。因此,我沒有生成可執(zhí)行二進(jìn)制文件,而是生成了一個目標(biāo)文件 (.o),當(dāng)然,無論我如何努力“chmod +x”,它都不會啟動。

驗(yàn)證您正在構(gòu)建的 go 包路徑實(shí)際上是package main.


查看完整回答
反對 回復(fù) 2023-08-21
?
飲歌長嘯

TA貢獻(xiàn)1951條經(jīng)驗(yàn) 獲得超3個贊

嘗試添加RUN chmod a+x 到最終版本。

COPY --from=builder /app/server /server
RUN chmod a+x /server
CMD ["/server"]


查看完整回答
反對 回復(fù) 2023-08-21
?
holdtom

TA貢獻(xiàn)1805條經(jīng)驗(yàn) 獲得超10個贊

顯然,這可能是因?yàn)?alpine linux 過于精簡,以至于缺少容器正常構(gòu)建或運(yùn)行所需的關(guān)鍵軟件包。

對于我的情況,它丟失了git。我git在 ca-certificates 之后添加到 RUN 行,以確保它已安裝。進(jìn)行此更改后,我的 Cloud Run 實(shí)例可以正常運(yùn)行。

# Use the official Golang image to create a build artifact.

# This is based on Debian and sets the GOPATH to /go.

FROM golang:1.19 as builder


# Create and change to the app directory.

WORKDIR /app


# Retrieve application dependencies using go modules.

# Allows container builds to reuse downloaded dependencies.

COPY go.* ./

RUN go mod download


# Copy local code to the container image.

COPY . ./


# Build the binary.

# -mod=readonly ensures immutable go.mod and go.sum in container builds.

RUN CGO_ENABLED=0 GOOS=linux go build -mod=readonly -v -o server


# Use the official Alpine image for a lean production container.

# https://hub.docker.com/_/alpine

# https://docs.docker.com/develop/develop-images/multistage-build/#use-multi-stage-builds

FROM alpine:3

RUN apk add --no-cache ca-certificates git


# Copy the binary to the production image from the builder stage.

COPY --from=builder /app/server /server


# Run the web service on container startup.

CMD ["/server"]


查看完整回答
反對 回復(fù) 2023-08-21
  • 3 回答
  • 0 關(guān)注
  • 385 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學(xué)習(xí)伙伴

公眾號

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號