diff --git a/.dockerignore b/.dockerignore new file mode 100644 index 0000000..55e27b7 --- /dev/null +++ b/.dockerignore @@ -0,0 +1,18 @@ +node_modules +npm-debug.log* +.npm + +.env +.env.* +!.env.example + +.git +.gitignore + +.DS_Store +Thumbs.db + +logs +*.log +*.tmp +*.temp diff --git a/.env.example b/.env.example index 7e7065e..af38ff2 100644 --- a/.env.example +++ b/.env.example @@ -15,5 +15,5 @@ SMTP_MAIL_FROM=noreply@example.com # Email отправителя # === Безопасность === API_PASS=your_secure_password_here # Пароль для доступа к API (используйте сложный!) -PORT=4000 # Порт, на котором будет работать сервер +PORT=80 # Порт, на котором будет работать сервер HOST=0.0.0.0 # Хост для облачного деплоя diff --git a/.gitignore b/.gitignore index f9c0aa7..b78f3fb 100644 --- a/.gitignore +++ b/.gitignore @@ -39,7 +39,9 @@ build/ !error.json !.gitignore +!.dockerignore !.env.example +!Dockerfile !package.json !package-lock.json !README.md diff --git a/Dockerfile b/Dockerfile new file mode 100644 index 0000000..8328e8b --- /dev/null +++ b/Dockerfile @@ -0,0 +1,16 @@ +FROM node:22-alpine + +WORKDIR /app + +ENV NODE_ENV=production +ENV HOST=0.0.0.0 +ENV PORT=80 + +COPY package*.json ./ +RUN npm ci --omit=dev + +COPY . . + +EXPOSE 80 + +CMD ["npm", "start"] diff --git a/README.MD b/README.MD index a450ffa..8848d46 100644 --- a/README.MD +++ b/README.MD @@ -12,6 +12,20 @@ npm start Сервис запустится на порту из `PORT` или на `4000` по умолчанию. +## Docker + +Сборка образа: + +```bash +docker build -t fns-receipt-service . +``` + +Запуск контейнера: + +```bash +docker run --env-file .env -p 80:80 fns-receipt-service +``` + ## Переменные окружения Заполните эти переменные в Timeweb Cloud в разделе переменных окружения: @@ -27,7 +41,7 @@ SMTP_USER=noreply@example.com SMTP_PASS=email_app_password SMTP_MAIL_FROM=noreply@example.com API_PASS=strong_api_password -PORT=4000 +PORT=80 HOST=0.0.0.0 ```