FROM node:22-alpine AS frontend WORKDIR /build COPY frontend/package.json frontend/package-lock.json ./ RUN npm ci COPY frontend/src/ ./src/ COPY frontend/tsconfig.json ./ RUN npm run build:prod FROM golang:1.25-alpine AS builder RUN apk add --no-cache git WORKDIR /build COPY .git ./.git COPY backend/go.mod backend/go.sum ./ RUN go mod download COPY backend/*.go ./ COPY backend/migrations/ ./migrations/ RUN CGO_ENABLED=0 go build -ldflags "-X main.version=$(git rev-parse --short HEAD)" -o dmrmap . FROM alpine:3.19 WORKDIR /app COPY --from=builder /build/dmrmap . COPY --from=builder /build/migrations/ ./migrations/ COPY frontend/static/ ./static/ COPY --from=frontend /build/static/app.js ./static/app.js COPY backend/data/rptrs.json . COPY backend/data/bmrptrs.json . RUN wget -qO static/talkgroups.json https://api.brandmeister.network/v2/talkgroup EXPOSE 8080 CMD ["./dmrmap"]