FROM oven/bun:1.3.3 AS base WORKDIR /app FROM base AS deps COPY package.json bun.lock ./ COPY apps/api/package.json apps/api/package.json COPY apps/ingester/package.json apps/ingester/package.json COPY apps/web/package.json apps/web/package.json COPY libs/database/package.json libs/database/package.json COPY libs/lexicons/package.json libs/lexicons/package.json COPY libs/tsconfig/package.json libs/tsconfig/package.json RUN \ --mount=type=cache,target=/root/.bun/install/cache \ bun install \ --frozen-lockfile \ --filter '@cookware/api' FROM base AS build COPY --from=deps /app/node_modules ./node_modules/ COPY . . RUN bun build /app/apps/api/src/index.ts \ --compile \ --minify \ --sourcemap \ --bytecode \ --outfile=/app/dist/api \ --target=bun \ --external '@libsql/*' FROM base AS libsql WORKDIR /app COPY bun.lock ./ RUN LIBSQL_VERSION=$(grep -oP '"@libsql/client@\K[0-9.]+' bun.lock | head -1) && \ bun install @libsql/client@${LIBSQL_VERSION} --production FROM rockylinux/rockylinux:9.4-ubi AS run ENV NODE_PATH=/app/node_modules COPY --from=build /app/dist/api /app/api COPY --from=libsql /app/node_modules /app/node_modules ENTRYPOINT ["/app/api"]