diff --git a/Dockerfile b/Dockerfile index 7b7967d..2c8cd7b 100644 --- a/Dockerfile +++ b/Dockerfile @@ -3,32 +3,37 @@ FROM node:23-slim AS base ENV PNPM_HOME="/pnpm" ENV PATH="$PNPM_HOME:$PATH" -RUN corepack enable -RUN apt-get update && apt-get install -y openssl fontconfig -RUN fc-cache -f -v -RUN pnpm i -g prisma prisma-kysely +RUN corepack enable \ + && corepack prepare pnpm@9.15.0 --activate + +RUN apt-get update \ + && apt-get install -y openssl fontconfig \ + && fc-cache -f -v \ + && rm -rf /var/lib/apt/lists/* WORKDIR /app - COPY . . -FROM base AS deps -RUN --mount=type=cache,id=pnpm,target=/pnpm/store pnpm install --prod --frozen-lockfile -RUN pnpm prisma generate - FROM base AS build -RUN --mount=type=cache,id=pnpm,target=/pnpm/store pnpm install --frozen-lockfile +RUN --mount=type=cache,id=pnpm,target=/pnpm/store \ + pnpm install --frozen-lockfile RUN pnpm prisma generate RUN pnpm run build -FROM base AS prod +FROM base AS deps +RUN --mount=type=cache,id=pnpm,target=/pnpm/store \ + pnpm install --prod --frozen-lockfile +RUN pnpm prisma generate -ENV NODE_ENV="production" +FROM node:23-slim AS prod +ENV NODE_ENV=production +WORKDIR /app COPY --from=deps /app/node_modules /app/node_modules COPY --from=build /app/dist /app/dist -COPY --from=base /app/static /app/static - -RUN chmod u+x ./entrypoint.sh +COPY --from=build /app/prisma /app/prisma +COPY --from=build /app/static /app/static +COPY entrypoint.sh . +RUN chmod +x ./entrypoint.sh ENTRYPOINT ["./entrypoint.sh"] diff --git a/entrypoint.sh b/entrypoint.sh index 4d9a5e6..df5f60f 100644 --- a/entrypoint.sh +++ b/entrypoint.sh @@ -1,4 +1,8 @@ #!/bin/sh +set -e -pnpm prisma migrate deploy -pnpm run start +echo "Running prisma migrations..." +npx prisma migrate deploy + +echo "Starting server..." +node ./dist/app.js