SaaS/DEPLOY.md
Claude Code bfbb2c7fa5 Initial commit: Click Counter SaaS Application
- Express.js server with static file serving
- Click counter frontend with localStorage persistence
- Optimized Docker setup with multi-stage build
- Production-ready configuration with health checks
- Automated deployment script for VPS
- Comprehensive deployment documentation

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-09-29 10:25:12 +01:00

3.5 KiB
Raw Blame History

🚀 Деплой Click Counter на VPS

Подготовка VPS

Убедитесь что на VPS установлены:

# Docker
curl -fsSL https://get.docker.com -o get-docker.sh
sudo sh get-docker.sh

# Docker Compose
sudo curl -L "https://github.com/docker/compose/releases/latest/download/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
sudo chmod +x /usr/local/bin/docker-compose

Автоматический деплой

Простой способ

./deploy.sh YOUR_VPS_IP root

С пользователем

./deploy.sh 192.168.1.100 ubuntu

Ручной деплой

1. Создание архива

tar --exclude='.git' --exclude='node_modules' --exclude='*.log' --exclude='.DS_Store' --exclude='saas-*' --exclude='*.tar.gz' -czf click-counter-deploy.tar.gz Dockerfile docker-compose.yml .dockerignore package.json package-lock.json server.js public/

2. Загрузка на VPS

scp click-counter-deploy.tar.gz root@YOUR_VPS_IP:/tmp/

3. Деплой на VPS

ssh root@YOUR_VPS_IP
mkdir -p /opt/click-counter
cd /opt/click-counter
tar -xzf /tmp/click-counter-deploy.tar.gz
docker-compose down || true
docker-compose build --no-cache
docker-compose up -d

Управление приложением

Проверить статус

ssh root@YOUR_VPS_IP 'cd /opt/click-counter && docker-compose ps'

Посмотреть логи

ssh root@YOUR_VPS_IP 'cd /opt/click-counter && docker-compose logs -f'

Перезапустить

ssh root@YOUR_VPS_IP 'cd /opt/click-counter && docker-compose restart'

Остановить

ssh root@YOUR_VPS_IP 'cd /opt/click-counter && docker-compose down'

Обновить приложение

./deploy.sh YOUR_VPS_IP root

Мониторинг

Health check

curl http://YOUR_VPS_IP:3000/health

Использование ресурсов

ssh root@YOUR_VPS_IP 'docker stats click-counter --no-stream'

Настройки

Изменить порт

В docker-compose.yml измените:

ports:
  - "8080:3000"  # Вместо 3000:3000

Ограничения памяти

В docker-compose.yml настройте:

deploy:
  resources:
    limits:
      memory: 256M  # Увеличить лимит

Размер образа

Оптимизации для минимального размера:

  • Alpine Linux (базовый образ ~5MB)
  • Multi-stage build
  • Минификация статики
  • .dockerignore
  • Очистка кэша npm

Ожидаемый размер итогового образа: ~50-70MB

Безопасность

  • Непривилегированный пользователь
  • Read-only файловая система где возможно
  • Ограничения ресурсов
  • Health checks
  • Логирование с ротацией

Troubleshooting

Контейнер не запускается

ssh root@YOUR_VPS_IP 'cd /opt/click-counter && docker-compose logs'

Порт занят

ssh root@YOUR_VPS_IP 'netstat -tlnp | grep :3000'

Мало места

ssh root@YOUR_VPS_IP 'docker system prune -af'

Проблемы с Docker

ssh root@YOUR_VPS_IP 'systemctl status docker'
ssh root@YOUR_VPS_IP 'systemctl restart docker'