go docker service

Dockerfile

Usar una imagen con Go solo para compilar y una imagen runtime separada.

FROM golang:1.25-alpine AS builder

WORKDIR /app

RUN apk add --no-cache git

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

COPY . .

RUN CGO_ENABLED=0 go build \
  -trimpath \
  -ldflags "-s -w -X 'main.gitHash=$(git describe --tags --always --dirty)' -X 'main.buildDate=$(date -Iseconds)'" \
  -o application ./cmd/server/

FROM alpine:3.22

RUN apk add --no-cache ca-certificates
RUN addgroup -S app && adduser -S app -G app

WORKDIR /app

COPY --from=builder --chown=app:app /app/application .

EXPOSE 8080

USER app

CMD ["/app/application"]

Recordatorios

var (
	buildDate = "unknown"
	gitHash   = "unknown"
)