You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.28 15:53:37