使用 Docker 多階段構建部署簡單 API 時,會拋出以下錯誤:$ docker build -t api:latest .[...]$ docker run -p 4880:4880 --rm --name=api api:latest2019/01/29 23:02:15 exec: "go": executable file not found in $PATH由于我的應用程序沒有go從任何地方(或任何地方exec.Command)調用我運行了一個go mod vendor所以我可以檢查依賴源代碼并找到以下內容:vendor/github.com/lib/pq/oid/gen.go12: "os/exec"64: cmd := exec.Command("gofmt")這可能是問題所在嗎?如果是,我該如何解決?我確信我之前已經成功地部署了github.com/lib/pq多階段構建,但我目前被卡住了。非常感謝,Happy Hacking。文件FROM golang:1-alpine AS builderENV GO111MODULE=onRUN apk --no-cache add ca-certificates gitWORKDIR /app# Copy go module info first...COPY go.mod .COPY go.sum .# ...then download to cache dependencies between buildsRUN go mod downloadCOPY . .RUN CGO_ENABLED=0 GOOS=linux GOARCH=amd64 go build -installsuffix cgo -ldflags '-extldflags "-static"' -o api cmd/api/FROM scratchWORKDIR /appCOPY --from=builder /app/api /app/COPY --from=builder /etc/ssl/certs/ca-certificates.crt /etc/ssl/certs/EXPOSE 8080ENTRYPOINT ["./api"]
Golang docker 多階段構建運行失?。?/h1>
1 回答

鴻蒙傳說
TA貢獻1865條經驗 獲得超7個贊
您的實際構建線:
RUN?CGO_ENABLED=0?GOOS=linux?GOARCH=amd64?go?build?-installsuffix?cgo?-ldflags?'-extldflags?"-static"'?-o?api?cmd/api/
前面缺少相對路徑cmd
,將其設為 be./cmd/api
將導致構建/運行成功。cmd/api
顯然是真實的,所以它沒有犯錯,但也沒有做你期望它做的事情。如果您go run cmd/api
在終端中輸入,您應該會看到大量與您的應用程序無關的輸出。
- 1 回答
- 0 關注
- 214 瀏覽
添加回答
舉報
0/150
提交
取消