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 ?