FROM --platform=linux/amd64 oven/bun:alpine AS js-builder WORKDIR /src/assets/lib COPY assets/lib/package.json assets/lib/bun.lock ./ RUN bun install --frozen-lockfile COPY assets/lib/ ./ RUN bun run build WORKDIR /src/assets/admin/lib COPY assets/admin/lib/package.json assets/admin/lib/bun.lock ./ RUN bun install --frozen-lockfile COPY assets/admin/lib/ ./ RUN bun run build FROM --platform=linux/amd64 golang:1.26-alpine AS builder RUN apk add --no-cache \ gcc \ musl-dev \ vips-dev \ pkgconfig WORKDIR /src COPY go.mod go.sum ./ RUN go mod download COPY . . COPY --from=js-builder /src/assets/lib/dist assets/lib/dist COPY --from=js-builder /src/assets/admin/lib/dist assets/admin/lib/dist RUN CGO_ENABLED=1 go build -o /iblog ./cmd/iblog FROM --platform=linux/amd64 alpine:3.21 RUN apk add --no-cache \ vips \ sqlite-libs \ ca-certificates COPY --from=builder /iblog /usr/local/bin/iblog VOLUME /data EXPOSE 8080 ENTRYPOINT ["iblog", "serve", "--root", "/data"]