27 lines
598 B
Docker
27 lines
598 B
Docker
# build stage
|
|
FROM oven/bun:1-alpine AS builder
|
|
WORKDIR /app
|
|
|
|
# install dependencies with cache mounts
|
|
COPY apps/elysia/package.json apps/elysia/bun.lock ./
|
|
RUN --mount=type=cache,target=/root/.bun/install/cache \
|
|
bun install --frozen-lockfile
|
|
|
|
# build the application
|
|
COPY apps/elysia ./
|
|
RUN bun run build
|
|
|
|
# runtime stage
|
|
FROM oven/bun:1-distroless
|
|
WORKDIR /app
|
|
|
|
# copy build artifacts
|
|
COPY --from=builder /app/dist ./dist
|
|
COPY --from=builder /app/package.json ./
|
|
|
|
# distroless uses nonroot user (UID 65532) by default, or we can use it
|
|
USER nonroot
|
|
|
|
EXPOSE 4092
|
|
CMD ["run", "dist/index.js"]
|