FROM golang:1.27.1-alpine AS build WORKDIR /src COPY go.mod go.sum ./ RUN go mod download COPY . . RUN CGO_ENABLED=0 go build -trimpath -ldflags="-s -w" -o /out/test-mqtt5 ./cmd/test-mqtt5 \ && CGO_ENABLED=0 go build -trimpath -ldflags="-s -w" -o /out/device-sim ./cmd/device-sim \ && CGO_ENABLED=0 go build -trimpath -ldflags="-s -w" -o /out/ui-proxy ./cmd/ui-proxy FROM build AS test RUN go test ./... && go vet ./... FROM alpine:3.22 RUN addgroup -S -g 10001 app && adduser -S -D -H -u 10001 -G app app \ && apk add --no-cache ca-certificates COPY --from=build /out/test-mqtt5 /test-mqtt5 COPY --from=build /out/device-sim /device-sim COPY --from=build /out/ui-proxy /ui-proxy USER app:app ENTRYPOINT ["/test-mqtt5"]