Windows环境下无法启动Go容器,遇x509证书未知签发机构错误
问题:Docker-Compose构建容器时出现X509证书错误(已解决Docker Build单独构建问题)
1. 相关配置文件
docker-compose.yml 内容
version: "3" services: broker-service: build: context: ./../broker-service dockerfile: ./../broker-service/broker-service.dockerfile restart: always ports: - "8080:80" deploy: mode: repliacted replicas: 1
broker-service.dockerfile 初始内容
# base go image FROM golang:1.18-alpine as builder RUN mkdir /app COPY . /app WORKDIR /app RUN CGO_ENABLED=0 go build -o brokerApp ./cmd/api RUN chmod +x /app/brokerApp # build a tiny docker image FROM alpine:latest RUN mkdir /app COPY --from=builder /app/brokerApp /app CMD [ "/app/brokerApp" ]
2. 遇到的错误
执行 docker-compose up -d 时的错误
=> [internal] load .dockerignore 0.1s => => transferring context: 2B 0.0s => [internal] load build definition from broker-service.dockerfile 0.1s => => transferring dockerfile: 378B 0.0s => CANCELED [internal] load metadata for docker.io/library/alpine:latest 1.1s => ERROR [internal] load metadata for docker.io/library/golang:1.18-alpine 1.1s ------ > [internal] load metadata for docker.io/library/golang:1.18-alpine: ------ failed to solve: golang:1.18-alpine: failed to do request: Head "https://registry-1.docker.io/v2/library/golang/manifests/1.18-alpine": x509: certificate signed by unknown authority
单独执行 docker build 构建时的错误
github.com/go-chi/chi/v5@v5.0.8: Get "https://proxy.golang.org/github.com/go-chi/chi/v5/@v/v5.0.8.zip": x509: certificate signed by unknown authority
3. 已尝试的无效解决方法
曾在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
4. 状态更新与疑问
修改Dockerfile后,docker build 命令可正常执行,但 docker-compose up -d 仍报相同的X509证书错误:
FROM golang:**latest** as builder . . RUN **GOPROXY=direct** CGO_ENABLED=0 go build -o brokerApp ./cmd/api
疑问:Docker和Docker-Compose的内部工作机制有何差异,导致单独构建正常但Compose构建仍报错?
内容的提问来源于stack exchange,提问作者Naxi
相关产品推荐
相关产品推荐

