'how to compile golang project with docker volume and download private module from bitbucket?

how to compile golang project with docker container? I want to compile and retrieve the project build, using docker cli

sample docker command

docker run -v $(pwd)/:/app -w /app -v $SSH_AUTH_SOCK:/tmp/ssh_auth.sock  -e SSH_AUTH_SOCK=/tmp/ssh_auth.sock  --name golanguser golang:1.17 sh -c "export GOPRIVATE=https://user:[email protected]/repo/ && go build -o main bitbucket.org/repo/source"


Solution 1:[1]

Building a go project is usually done in a multi-stage build

# syntax=docker/dockerfile:1

##
## Build
##
FROM golang:1.16-buster AS build

WORKDIR /app

COPY go.mod ./
COPY go.sum ./
RUN go mod download

COPY *.go ./

RUN go build -o /docker-gs-ping

##
## Deploy
##
FROM gcr.io/distroless/base-debian10

WORKDIR /

COPY --from=build /docker-gs-ping /docker-gs-ping

EXPOSE 8080

USER nonroot:nonroot

ENTRYPOINT ["/docker-gs-ping"]

With:

docker build -t docker-gs-ping:multistage -f Dockerfile.multistage .

That way, you can deploy the built application in the image of your choice, resulting in a markedly smaller image size to run.

Sources

This article follows the attribution requirements of Stack Overflow and is licensed under CC BY-SA 3.0.

Source: Stack Overflow

Solution Source
Solution 1 VonC