FROM node:24-slim AS base WORKDIR /usr/src/webserver # needed for prisma RUN apt-get update -y && apt-get install openssl -y FROM base AS install # Install packages: dev and then build RUN mkdir -p /temp/dev COPY package.json package-lock.json /temp/dev/ RUN cd /temp/dev && npm ci RUN mkdir -p /temp/prod COPY package.json package-lock.json /temp/prod/ RUN cd /temp/prod && npm ci --omit=dev FROM base AS prebuild # copy installed dev packages COPY --from=install /temp/dev/node_modules node_modules # Copy source files COPY . . # Initialize prisma RUN npx prisma generate FROM prebuild AS build # Build project RUN npm run build FROM base AS release # Copy release files COPY --from=install /temp/prod/node_modules node_modules COPY --from=build /usr/src/webserver/build . EXPOSE 3000/tcp CMD ["node", "."] FROM prebuild AS dev RUN npx svelte-kit sync EXPOSE 5173/tcp CMD ["npm", "run", "dev", "--", "--host"]