FROM node:alpine AS frontend_builder WORKDIR /app COPY package.json package-lock.json ./ RUN npm ci COPY src ./src COPY public ./public COPY tsconfig.json ./ COPY index.html ./ RUN npm run build FROM golang:alpine AS server_builder WORKDIR /app COPY go.mod ./ RUN go mod download COPY main.go ./ COPY --from=frontend_builder /app/dist ./dist RUN CGO_ENABLED=0 GOOS=linux GOARCH=amd64 go build -o main FROM alpine:latest WORKDIR /app RUN apk add --no-cache ca-certificates COPY --from=server_builder /app/main ./main COPY --from=server_builder /app/dist ./dist EXPOSE 8181 CMD ["./main"]