Docker 다단계 빌드: "x509: 알 수 없는 기관에서 서명한 인증서" 오류 해결
Go in용 Docker 이미지를 빌드하려고 할 때 다단계 빌드를 사용하는 개인 기업 네트워크의 경우 "x509: 알 수 없는 기관에서 서명된 인증서" 오류가 발생할 수 있습니다. 이 문제는 Go 종속성을 검색하는 동안 인증서 및 인증 문제로 인해 발생합니다.
문제 이해:
Go에서 종속성에 액세스하는 데 사용되는 git, 컬을 활용합니다. 이를 위해서는 필요한 인증서를 시스템의 CA 저장소로 가져와야 합니다. 처음에는 환경 변수 GIT_SSL_NO_VERIFY=1을 사용하는 것이 제안되었지만 이 접근 방식은 종속성을 얻는 데 효과적이지 않은 것으로 나타났습니다.
해결책: CA 저장소로 인증서 가져오기
이 문제를 해결하려면 관련 인증서를 시스템의 CA 저장소로 가져와야 합니다. 방법은 OS에 따라 다르지만 일반적으로 openssl 명령을 사용합니다.
예를 들어 Debian 기반 시스템에서는 다음 명령을 사용할 수 있습니다.
수정된 Dockerfile :
이러한 인증서 가져오기 단계를 Dockerfile에 통합하면 문제가 해결되어 종속성을 확보하고 빌드를 성공적으로 진행할 수 있습니다. 다음은 업데이트된 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 ["/./main"]
위 내용은 Go 프로젝트용 Docker 다단계 빌드의 \"x509: 알 수 없는 기관에서 서명한 인증서\" 오류를 수정하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!