我尝试使用docker-multi-stage-build在私有公司网络中构建go图像:
FROM golang:latest as builder
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"]
Run Code Online (Sandbox Code Playgroud)
并得到x509: certificate signed by unknown authority错误
Step 1/13 : FROM golang:latest as builder
---> 2421885b04da
Step 2/13 : WORKDIR /app
---> Using cache
---> 6555644dbd16
Step …Run Code Online (Sandbox Code Playgroud) 我正在尝试一些基本示例来从 Web 请求数据,但是对不同主机的所有请求都会导致 SSL 错误:x509: certificate signed by unknown authority. 注意:我不是在代理后面,也没有任何形式的证书拦截发生,因为使用 curl 或浏览器工作没有问题。
我目前正在使用的代码示例是:
package main
import (
"fmt"
"net/http"
"io/ioutil"
"os"
)
func main() {
response, err := http.Get("https://google.com")
if err != nil {
fmt.Printf("%s\n", err)
os.Exit(1)
} else {
defer response.Body.Close()
contents, err := ioutil.ReadAll(response.Body)
if err != nil {
fmt.Printf("%s", err)
os.Exit(1)
}
fmt.Printf("%s\n", string(contents))
}
}
Run Code Online (Sandbox Code Playgroud)
编辑:代码在 Arch linux 内核 4.9.37-1-lts 上运行。
编辑 2:显然/etc/ssl/certs/ca-certificates.crt我的系统上的版本存在差异,通过(重新)移动证书并ca-certificates-utils手动重新安装包,问题解决了。