我创建了一个docker容器,用于使用GoLang与Google api通讯。我开始使用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
但是我不知道这是否直接相关或者我是否需要与容器共享一些证书。
答案 0 :(得分:14)
从头开始,除了图像中的应用程序之外,还需要包括受信任的证书。例如
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"]
答案 1 :(得分:0)
您可以专门为ubuntu使用自签名证书。 在开始之前,您应该已经为非root用户配置了sudo特权。您可以按照我们对Ubuntu 16.04的初始服务器设置来学习如何设置这样的用户帐户。