# Веб-интерфейс ObrCRM (проверочный экземпляр).
#
# Собирается в рабочем режиме (не в режиме разработки): интерфейс компилируется
# на этапе сборки образа и затем запускается как готовое приложение.
# NEXT_PUBLIC_API_URL намеренно пустой — интерфейс обращается к серверной части
# по относительным адресам, маршрутизацию выполняет веб-сервер комплекта.
FROM node:20-alpine

WORKDIR /app

COPY package*.json ./
# Сначала строгая установка по зафиксированным версиям. Если файл фиксации
# разошёлся со списком зависимостей (так бывает, когда пакеты ставили разными
# версиями npm), переходим к обычной установке — комплект должен собираться у
# проверяющего в любом случае, без ручного вмешательства.
RUN npm ci || npm install

COPY . .

ENV NEXT_PUBLIC_API_URL=""
ENV NEXT_TELEMETRY_DISABLED=1
RUN npm run build

ENV NODE_ENV=production
EXPOSE 3003
# Слушаем все адреса контейнера: штатная команда `npm run start` привязана к
# 127.0.0.1, и тогда веб-сервер комплекта (соседний контейнер) до интерфейса
# не достучится.
CMD ["npx", "next", "start", "-H", "0.0.0.0", "-p", "3003"]
