Rumah >pembangunan bahagian belakang >Golang >Bagaimana untuk Membetulkan Ralat Binaan Imej Berbilang Peringkat Docker: \'x509: Sijil Ditandatangani oleh Pihak Berkuasa Tidak Diketahui\'?

Bagaimana untuk Membetulkan Ralat Binaan Imej Berbilang Peringkat Docker: \'x509: Sijil Ditandatangani oleh Pihak Berkuasa Tidak Diketahui\'?

Patricia Arquette
Patricia Arquetteasal
2024-11-03 20:46:03236semak imbas

How to Fix Docker Multi-Stage Image Build Errors:

Ralat Binaan Imej Berbilang Peringkat Docker: x509: Sijil Ditandatangani oleh Pihak Berkuasa Tidak Diketahui

Ralat ini berlaku semasa membina imej Docker yang bergantung pada Git untuk pengurusan pergantungan, seperti yang menggunakan teknik binaan berbilang peringkat docker.

Gambaran Keseluruhan Masalah

Semasa membina imej, Git menggunakan stor CA sistem untuk mengesahkan sijil SSL. Walau bagaimanapun, dalam rangkaian peribadi, kedai ini mungkin tidak mengandungi sijil yang diperlukan untuk menyambung ke pelayan luaran seperti GitHub dan proxy.golang.org, mengakibatkan ralat "x509: sijil yang ditandatangani oleh pihak berkuasa yang tidak diketahui".

Penyelesaian

Masalah boleh diselesaikan dengan mengimport sijil ke dalam stor sistem CA.

Penyelesaian

  1. Pasang OpenSSL: Pasang pakej OpenSSL pada mesin hos.
  2. Dapatkan Sijil: Dapatkan sijil untuk pelayan yang bermasalah menggunakan arahan OpenSSL berikut:

    • Untuk GitHub: openssl s_client -showcerts -connect github.com:443 < /dev/null 2> /dev/null | openssl x509 -outform PEM > ${cert_location}/github.crt
    • Untuk proxy.golang.org: openssl s_client -showcerts -connect proxy.golang.org:443 < /dev/null 2> /dev/null | openssl x509 -outform PEM > ${cert_location}/proxy.golang.crt
  3. Import Sijil: Import sijil ke dalam sistem CA store menggunakan perintah update-ca-certificates.

Fail Docker yang disemak

Fail Docker yang disemak berikut menggabungkan langkah-langkah import sijil:

<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>

Nota: Kemas kini Perintah -ca-certificates mungkin mengambil masa beberapa minit untuk diselesaikan. Setelah selesai, binaan Docker berikutnya harus diteruskan tanpa ralat "x509: sijil ditandatangani oleh pihak berkuasa yang tidak diketahui".

Atas ialah kandungan terperinci Bagaimana untuk Membetulkan Ralat Binaan Imej Berbilang Peringkat Docker: \'x509: Sijil Ditandatangani oleh Pihak Berkuasa Tidak Diketahui\'?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn