FROM node:22 AS builder

WORKDIR /usr/src/app/

# Сначала копируем только файлы, необходимые для установки зависимостей
COPY ./package.json /usr/src/app/package.json
COPY ./package-lock.json /usr/src/app/package-lock.json

# Устанавливаем все зависимости
RUN npm ci

# Затем копируем исходный код проекта и файлы конфигурации
COPY ./tsconfig.json /usr/src/app/tsconfig.json
COPY ./server /usr/src/app/server

# Сборка проекта
RUN npm run build

# Вторая стадия - рабочий образ
FROM node:22

RUN mkdir -p /usr/src/app/server/log/
WORKDIR /usr/src/app/

# Копирование только package.json/package-lock.json для продакшн зависимостей
COPY ./package.json /usr/src/app/package.json
COPY ./package-lock.json /usr/src/app/package-lock.json

# Установка только продакшн зависимостей
RUN npm ci --production

# Копирование собранного приложения из билдера
COPY --from=builder /usr/src/app/dist /usr/src/app/dist
COPY --from=builder /usr/src/app/server /usr/src/app/server

EXPOSE 8044

CMD ["npm", "run", "up:prod"]
