| # Используем официальный образ Node.js 18 в slim-версии | |
| FROM node:18-slim | |
| # Устанавливаем рабочую директорию внутри контейнера | |
| WORKDIR /usr/src/app | |
| # Копируем package.json и package-lock.json для установки зависимостей | |
| COPY package*.json ./ | |
| # Устанавливаем зависимости, необходимые для работы приложения | |
| # Флаг --omit=dev пропускает установку devDependencies | |
| RUN npm install --omit=dev | |
| # Копируем все остальные файлы проекта в рабочую директорию | |
| COPY . . | |
| # Создаем директорию 'data', где будет храниться база данных SQLite | |
| RUN mkdir ./data | |
| # Меняем владельца всех файлов и папок в /usr/src/app на пользователя 'node' | |
| # Это необходимо, чтобы приложение имело права на запись в эту директорию (например, для создания и изменения файла БД) | |
| RUN chown -R node:node . | |
| # Указываем, что контейнер будет слушать порт 7860 | |
| EXPOSE 7860 | |
| # Устанавливаем переменную окружения для production | |
| ENV NODE_ENV=production | |
| # Команда для запуска приложения при старте контейнера | |
| CMD ["node", "server.js"] | |