FROM node:alpine AS jsbuilder WORKDIR /build COPY static/vendor/editor.js ./editor.js RUN npx --yes esbuild editor.js --bundle=false --minify --outfile=editor.min.js COPY package.json ./package.json RUN npm install --silent COPY milkdown-entry.js ./milkdown-entry.js RUN npx esbuild milkdown-entry.js --bundle --format=esm --minify --outfile=milkdown.min.js RUN npx esbuild node_modules/prosemirror-collab/dist/index.js --bundle --format=esm --minify --outfile=collab.min.js FROM golang:1.23-alpine AS builder RUN apk add --no-cache gcc musl-dev WORKDIR /app COPY go.mod go.sum ./ RUN go mod download COPY . . RUN CGO_ENABLED=1 go build -o markdownhub ./cmd/server FROM alpine:3.20 RUN apk add --no-cache ca-certificates WORKDIR /app COPY --from=builder /app/markdownhub . COPY --from=builder /app/templates ./templates COPY --from=builder /app/static ./static COPY --from=jsbuilder /build/editor.min.js ./static/vendor/editor.js COPY --from=jsbuilder /build/milkdown.min.js ./static/vendor/milkdown.js COPY --from=jsbuilder /build/collab.min.js ./static/vendor/collab.js COPY --from=builder /app/migrations ./migrations EXPOSE 8080 ENV PORT=8080 CMD ["./markdownhub"]