# Builder FROM node:18-alpine3.18 AS builder WORKDIR /build # Zkopírování závislostí - server COPY server/package.json ./server/ COPY server/yarn.lock ./server/ # Zkopírování závislostí - klient COPY client/package.json ./client/ COPY client/yarn.lock ./client/ # Instalace závislostí - server WORKDIR /build/server RUN yarn install --frozen-lockfile # Instalace závislostí - klient WORKDIR /build/client RUN yarn install --frozen-lockfile WORKDIR /build # Zkopírování build závislostí - server COPY server/tsconfig.json ./server/ COPY server/src ./server/src/ # Zkopírování build závislostí - klient COPY client/tsconfig.json ./client/ COPY client/vite.config.ts ./client/ COPY client/vite-env.d.ts ./client/ COPY client/index.html ./client/ COPY client/src ./client/src COPY client/public ./client/public # Zkopírování společných typů COPY types ./types/ # Sestavení serveru WORKDIR /build/server RUN yarn build # Sestavení klienta WORKDIR /build/client RUN yarn build # Runner FROM node:18-alpine3.18 ENV LANG cs_CZ.UTF-8 ENV NODE_ENV production WORKDIR /app # Vykopírování sestaveného serveru COPY --from=builder /build/server/node_modules ./server/node_modules COPY --from=builder /build/server/dist ./ # Vykopírování sestaveného klienta COPY --from=builder /build/client/dist ./public # Zkopírování produkčních .env serveru COPY /server/.env.production ./server/src # Zkopírování konfigurace easter eggů RUN if [ -f /server/.easter-eggs.json ]; then cp /server/.easter-eggs.json ./server/; fi # Export /data/db.json do složky /data VOLUME ["/data"] COPY /data/db.json /data/db.json EXPOSE 3000 CMD [ "node", "./server/src/index.js" ]