FROM golang:1.27-alpine@sha256:4cb7ac979db5fcc41cae44b2227ba5ab8a51e8807f40d9ba4dee20a0ad960b5b AS build WORKDIR /src ENV CGO_ENABLED=0 COPY go.mod go.sum ./ RUN go mod download COPY cmd ./cmd COPY internal ./internal RUN go build -trimpath -ldflags "-s -w" -o /out/lodge-server ./cmd/lodge-server RUN for target in darwin/arm64 darwin/amd64 linux/arm64 linux/amd64; do \ GOOS=${target%/*} GOARCH=${target#*/} go build -trimpath -ldflags "-s -w" -o /out/dl/lodge-${target%/*}-${target#*/} ./cmd/lodge || exit 1; \ done FROM alpine:3.24@sha256:294b683cb724975bec92580e1e685676bd4b50bda910ddb8c51d4cabeaec77e6 WORKDIR /app COPY --from=build /out/lodge-server /usr/local/bin/lodge-server COPY --from=build /out/dl ./dl CMD ["lodge-server"]