如何修復 Docker 多階段映像建置錯誤:「x509:未知機構簽署的憑證」?
Docker 多階段鏡像建置錯誤:x509:憑證由未知機構簽署
建置依賴Git 的Docker 映像時會出現此錯誤用於依賴管理,例如使用docker-multi-stage-build 技術的依賴管理。
問題概述
在鏡像建置過程中,Git 使用系統 CA 儲存來驗證SSL 憑證。但是,在專用網路中,此儲存可能不包含連接到 GitHub 和 proxy.golang.org 等外部伺服器所需的證書,從而導致「x509:證書由未知機構簽署」錯誤。
解決方法
可以透過將憑證匯入系統CA儲存來解決該問題。
解決方案
- 安裝 OpenSSL: 在主機上安裝 OpenSSL 軟體套件。
-
取得憑證:使用以下OpenSSL 指令擷取有問題的伺服器的憑證:
- 對於GitHub:openssl s_client -showcerts com:443 /dev/null | openssl x509 -outform PEM > > ${cert_location}/github.crt
- 對於proxy.gonectorg:openssllang sxy_client -showcerts -connectnect proect .golang.org:443 /dev/null | openssl x509 -outform PEM > > ${cert_location}/proxy.golang.crt
<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中文網其他相關文章!

熱AI工具

Undresser.AI Undress
人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover
用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool
免費脫衣圖片

Clothoff.io
AI脫衣器

Video Face Swap
使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱門文章

熱工具

記事本++7.3.1
好用且免費的程式碼編輯器

SublimeText3漢化版
中文版,非常好用

禪工作室 13.0.1
強大的PHP整合開發環境

Dreamweaver CS6
視覺化網頁開發工具

SublimeText3 Mac版
神級程式碼編輯軟體(SublimeText3)

Golang在性能和可擴展性方面優於Python。 1)Golang的編譯型特性和高效並發模型使其在高並發場景下表現出色。 2)Python作為解釋型語言,執行速度較慢,但通過工具如Cython可優化性能。

Golang在並發性上優於C ,而C 在原始速度上優於Golang。 1)Golang通過goroutine和channel實現高效並發,適合處理大量並發任務。 2)C 通過編譯器優化和標準庫,提供接近硬件的高性能,適合需要極致優化的應用。

goisidealforbeginnersandsubableforforcloudnetworkservicesduetoitssimplicity,效率和concurrencyFeatures.1)installgromtheofficialwebsitealwebsiteandverifywith'.2)

Golang適合快速開發和並發場景,C 適用於需要極致性能和低級控制的場景。 1)Golang通過垃圾回收和並發機制提升性能,適合高並發Web服務開發。 2)C 通過手動內存管理和編譯器優化達到極致性能,適用於嵌入式系統開發。

Golang和Python各有优势:Golang适合高性能和并发编程,Python适用于数据科学和Web开发。Golang以其并发模型和高效性能著称,Python则以简洁语法和丰富库生态系统著称。

Golang和C 在性能上的差異主要體現在內存管理、編譯優化和運行時效率等方面。 1)Golang的垃圾回收機制方便但可能影響性能,2)C 的手動內存管理和編譯器優化在遞歸計算中表現更為高效。

Golang和C 在性能競賽中的表現各有優勢:1)Golang適合高並發和快速開發,2)C 提供更高性能和細粒度控制。選擇應基於項目需求和團隊技術棧。

Golangisidealforbuildingscalablesystemsduetoitsefficiencyandconcurrency,whilePythonexcelsinquickscriptinganddataanalysisduetoitssimplicityandvastecosystem.Golang'sdesignencouragesclean,readablecodeanditsgoroutinesenableefficientconcurrentoperations,t
