# 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 ./
COPY server/resources ./server/resources

# 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ů
# TODO tohle spadne když nebude existovat!
COPY /server/.easter-eggs.json ./server/

EXPOSE 3000

CMD [ "node", "./server/src/index.js" ]