GoLangを使用してGoogle APIと通信するためのDockerコンテナーを作成しました。 SCRATCHコンテナーの使用を開始し、ubuntu/Alpineに変更すると_certificate signed by unknown authority
_エラーが発生しますが、それでもエラーが発生します。
resp, err := client.Get("https://www.googleapis.com/oauth2/v3/userinfo")
この問題を解決する助けがあれば素晴らしいでしょう。 Macで問題なくコードを実行できます。
いくつかの調査を行った後、問題を確認できます https://github.com/golang/go/issues/24652
これが直接関連しているかどうか、または証明書をコンテナと共有する必要があるかどうかはわかりません。
スクラッチでは、イメージにアプリケーションに加えて信頼できる証明書を含める必要があります。例えば。
FROM scratch
ADD ca-certificates.crt /etc/ssl/certs/
ADD main /
CMD ["/main"]
Alpineとマルチステージビルドを使用している場合は、次のようになります。
FROM golang:Alpine as build
RUN apk --no-cache add ca-certificates
WORKDIR /go/src/app
COPY . .
RUN CGO_ENABLED=0 go-wrapper install -ldflags '-extldflags "-static"'
FROM scratch
COPY --from=build /etc/ssl/certs/ca-certificates.crt /etc/ssl/certs/
COPY --from=build /go/bin/app /app
ENTRYPOINT ["/app"]
Ubuntu専用の自己署名証明書を使用できます。始める前に、非rootユーザーにSudo特権が構成されている必要があります。 Ubuntu 16.04の初期サーバーセットアップに従って、このようなユーザーアカウントをセットアップする方法を学ぶことができます。