FROM node:20-slim AS build WORKDIR /app COPY package*.json ./ RUN npm install COPY . . # Zbuilduje server (tsc -> dist) i web (vite -> dist/public) RUN npm run build FROM node:20-slim WORKDIR /app ENV NODE_ENV=production ENV PORT=3000 EXPOSE 3000 COPY package*.json ./ RUN npm install --omit=dev COPY --from=build /app/dist ./dist # Skripty konektoru jsou obycejny JavaScript, nekompiluji se. Musi se ale # dostat do image, jinak by konektory nemely zadnou vykonnou cast. COPY --from=build /app/scripts ./scripts # Migrace jsou .sql, ktere tsc do dist nekopiruje. Bez nich by se schema # nevytvorilo, aplikace by spadla na migracich a jela dal v pameti - tedy presne # to, co ma databaze resit. Cesta musi odpovidat dist/db/migrations, protoze # odtud si je hleda src/db/migrate.ts. COPY --from=build /app/src/db/migrations ./dist/db/migrations CMD ["npm", "start"]