# Используем официальный образ 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"] | |