Docker 多階段鏡像建置錯誤:x509:憑證由未知機構簽署
建置依賴Git 的Docker 映像時會出現此錯誤用於依賴管理,例如使用docker-multi-stage-build 技術的依賴管理。
問題概述
在鏡像建置過程中,Git 使用系統 CA 儲存來驗證SSL 憑證。但是,在專用網路中,此儲存可能不包含連接到 GitHub 和 proxy.golang.org 等外部伺服器所需的證書,從而導致「x509:證書由未知機構簽署」錯誤。
解決方法
可以透過將憑證匯入系統CA儲存來解決該問題。
解決方案
取得憑證:使用以下OpenSSL 指令擷取有問題的伺服器的憑證:
<code class="dockerfile">FROM golang:latest as builder RUN apt-get update && apt-get install -y ca-certificates openssl ARG cert_location=/usr/local/share/ca-certificates # Get certificate from "github.com" RUN openssl s_client -showcerts -connect github.com:443 < /dev/null 2> /dev/null | openssl x509 -outform PEM > ${cert_location}/github.crt # Get certificate from "proxy.golang.org" RUN openssl s_client -showcerts -connect proxy.golang.org:443 < /dev/null 2> /dev/null | openssl x509 -outform PEM > ${cert_location}/proxy.golang.crt # Update certificates RUN update-ca-certificates WORKDIR /app COPY go.mod go.sum ./ RUN go mod download COPY . . RUN GO111MODULE="on" CGO_ENABLED=0 GOOS=linux go build -o main ${MAIN_PATH} FROM alpine:latest LABEL maintainer="Kozmo" RUN apk add --no-cache bash WORKDIR /app COPY --from=builder /app/main . EXPOSE 8080 CMD ["/app/main"]</code>
導入憑證:使用update-ca-certificates 指令將憑證匯入系統CA 儲存體。 修訂後的Dockerfile以下修訂後的Dockerfile 合併了憑證匯入步驟: 更新-ca-certificates 指令可能需要幾分鐘才能完成。完成後,後續的 Docker 建置應該會繼續進行,而不會出現「x509:憑證由未知機構簽署」錯誤。
以上是如何修復 Docker 多階段映像建置錯誤:「x509:未知機構簽署的憑證」?的詳細內容。更多資訊請關注PHP中文網其他相關文章!