smart-line-bot / docs /deployment.md
Smiel2's picture
Initial commit
2eae977 verified
|
Raw
History Blame Contribute Delete
3.73 kB
# Deployment Guide
Complete deployment instructions for Smart LINE Bot + Dashboard + Scraper Pipeline.
## Prerequisites
- Docker 20.10+
- Docker Compose 2.0+
- PostgreSQL 15+ (optional, using Docker)
- Redis 7+ (optional, using Docker)
## Quick Start (Docker Compose)
### 1. Clone and Setup
```bash
git clone https://github.com/Smiledangers/smart-line-automation-suite.git
cd smart-line-automation-suite
# Copy environment template
cp .env.example .env
# Edit .env with your settings
nano .env
```
### 2. Configure Environment
```env
# Required
LINE_CHANNEL_ACCESS_TOKEN=your_line_token
LINE_CHANNEL_SECRET=your_line_secret
OPENAI_API_KEY=your_openai_key
# Database
POSTGRES_PASSWORD=your_secure_password
SECRET_KEY=your_secret_key
```
### 3. Start Services
```bash
# Build and start all services
docker compose up -d --build
# Check status
docker compose ps
```
### 4. Initialize Database
```bash
# Run migrations
docker compose exec web alembic upgrade head
# Create superuser
docker compose exec web python scripts/create_superuser.py
```
### 5. Access Application
- API: http://localhost:8000/docs
- Health: http://localhost:8000/health
## Production Deployment
### Using Docker Compose (Production)
```bash
# Create production compose file
cp docker-compose.yml docker-compose.prod.yml
# Edit for production
# - Use specific image tags
# - Enable health checks
# - Configure logging
# Start production
docker compose -f docker-compose.prod.yml up -d
```
### Using Kubernetes
```bash
# Apply Kubernetes manifests
kubectl apply -f deploy/k8s/
# Or use Helm
helm install demo-bot deploy/helm/demo-bot/
```
### Using Helm Chart
```bash
# Install Helm chart
helm install smart-line-bot deploy/helm/demo-bot/ \
--set env.LINE_CHANNEL_ACCESS_TOKEN=xxx \
--set env.LINE_CHANNEL_SECRET=xxx \
--set env.OPENAI_API_KEY=xxx
```
### Using Cloud Platforms
#### Render.com
```bash
# Deploy using render.yaml
render deploy
```
#### Railway
```bash
# Deploy using railway.json
railway deploy
```
## Environment Variables
| Variable | Required | Description |
|----------|----------|-------------|
| `LINE_CHANNEL_ACCESS_TOKEN` | Yes | LINE Messaging API token |
| `LINE_CHANNEL_SECRET` | Yes | LINE channel secret |
| `OPENAI_API_KEY` | Yes | OpenAI API key |
| `DATABASE_URL` | Yes | PostgreSQL connection string |
| `REDIS_URL` | Yes | Redis connection string |
| `SECRET_KEY` | Yes | JWT signing key |
| `SENTRY_DSN` | No | Sentry error tracking |
| `SMTP_*` | No | Email configuration |
## Health Checks
```bash
# Check container health
docker compose ps
# Check application health
curl http://localhost:8000/health
# Check database
docker compose exec db pg_isready
# Check Redis
docker compose exec redis redis-cli ping
```
## Troubleshooting
### Container Won't Start
```bash
# Check logs
docker compose logs web
# Check environment
docker compose exec web env
```
### Database Connection Error
```bash
# Verify database is running
docker compose ps db
# Check connection
docker compose exec web python -c "from app.core.database import engine; engine.connect()"
```
### LINE Webhook Not Working
```bash
# Verify LINE credentials
docker compose exec web python -c "from app.core.config import settings; print(settings.LINE_CHANNEL_ACCESS_TOKEN)"
```
## Backup and Restore
### Backup Database
```bash
docker compose exec db pg_dump -U postgres demo_project > backup.sql
```
### Restore Database
```bash
docker compose exec -T db psql -U postgres demo_project < backup.sql
```
## Monitoring
### View Logs
```bash
# All services
docker compose logs -f
# Specific service
docker compose logs -f web
```
### Prometheus Metrics
```bash
# Access metrics
curl http://localhost:8000/metrics
```