1

I am trying to spin up few containers using docker-compose. Below is how the docker-compose file looks like .

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
  

And the corresponding broker-service.dockerfile looks like below.

# 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" ]

When I run docker-compose up -d , it gives me below error.

 => [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

And when I run the docker build for broker-service.dockerfile, it gives below error.

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

I tried adding below to dockerfile but it still fails with the same error.

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

What else do I need to do in order to fix it ? Already referred this

Update

I did below change in the docker file which made it work through the docker build command.

FROM golang:**latest** as builder
.
.
RUN **GOPROXY=direct** CGO_ENABLED=0 go build -o brokerApp ./cmd/api

I am able to spin up the containers using plain docker commands. However, docker-compose still gives same errors ? Is there a difference between how docker and docker-compose work internally ?

Naxi
  • 1,504
  • 5
  • 33
  • 72

0 Answers0