Docker/Golang
-
DevOps
Dockerfile basico
# Etapa 1: Build (compilação do código Go)
FROM golang:1.23-alpine AS builder
WORKDIR /app
# Copia os arquivos de dependências go.mod e go.sum para o contêiner
COPY go.mod go.sum ./
# Baixa as dependências do Go
RUN go mod tidy
# Copia o código fonte do seu projeto para o contêiner
COPY . .
# Compila o código Go e gera um binário chamado 'servidor'
RUN go build -o servidor .
# Etapa 2: Imagem final - a partir da imagem Alpine, que é mais leve
FROM alpine:latest
# Copia o binário compilado da etapa 1 para a imagem final
COPY --from=builder /app/servidor /usr/local/bin/servidor
# Expõe a porta 8080 para que o contêiner possa receber requisições
EXPOSE 8080
# Define o comando a ser executado quando o contêiner for iniciado
CMD ["/usr/local/bin/servidor"]
```
construir conteiner
docker build -t servidor-go .
Rodar conteiner
docker run -p 8080:8080 servidor-go
Taguear a imagem
docker tag servidor-go kaiodeodato/servidor-go:latest
Push para Dockerhub
docker push kaiodeodato/servidor-go:latest
Se quiser atualizar a imagem latest, fazer build sem cache
docker build --no-cache -t kaiodeodato/servidor-go:latest .