diff --git a/Dockerfile b/Dockerfile index 37b2292..970470a 100644 --- a/Dockerfile +++ b/Dockerfile @@ -1,28 +1,28 @@ -FROM node:lts-alpine AS base +FROM node:24-alpine AS base WORKDIR /app -RUN npm i -g pnpm +RUN corepack enable && corepack prepare pnpm@latest --activate -FROM base AS prod-deps +FROM base AS builder WORKDIR /app -RUN apk add --no-cache python3 make g++ + +RUN apk add --no-cache python3 make g++ libc6-compat + COPY package.json pnpm-lock.yaml ./ -RUN pnpm install --prod --frozen-lockfile -FROM base AS build-deps -WORKDIR /app -RUN apk add --no-cache python3 make g++ -COPY package.json pnpm-lock.yaml ./ -RUN pnpm install --frozen-lockfile +RUN --mount=type=cache,id=pnpm,target=/root/.local/share/pnpm/store \ + pnpm install --frozen-lockfile || pnpm install -FROM build-deps AS builder -WORKDIR /app COPY . . RUN pnpm run build -FROM base AS runtime +RUN pnpm prune --prod + +FROM node:24-alpine AS runtime WORKDIR /app -COPY --from=prod-deps /app/node_modules ./node_modules +RUN apk add --no-cache libc6-compat vips + +COPY --from=builder /app/node_modules ./node_modules COPY --from=builder /app/dist ./dist COPY --from=builder /app/drizzle ./drizzle COPY --from=builder /app/scripts ./scripts @@ -32,4 +32,4 @@ ENV HOST=0.0.0.0 ENV PORT=4321 EXPOSE 4321 -CMD ["sh", "-c", "npm run migrate && node ./dist/server/entry.mjs"] +CMD ["sh", "-c", "node ./scripts/migrate.js && node ./dist/server/entry.mjs"]