MultiStage Build

O multisatge é uma funcionalidade do Dockerfile que permite que você construa uma imagem em múltiplas etapas. Isso é útil quando você precisa de uma imagem com várias ferramentas para construir o seu projeto, mas não quer que a imagem final fique “gorda” (com muitos MBs).

Criando o Dockerfile:

FROM golang:1.20 as buildando
WORKDIR /app
COPY teste.go .
RUN go mod init hello
RUN go build -o /app/hello

FROM alpine:3.18
COPY --from=buildando /app/hello /app/hello
CMD ["/app/hello"]

Criando o arquivo main.go:

package main

import "fmt"

func main() {
    fmt.Println("Hello Giropops!")
}

Executando o build:

docker build -t go-teste:1.0 .
docker container run -ti go-teste:1.0