remove redis
This commit is contained in:
parent
646a10f45c
commit
af58550f7f
10 changed files with 12 additions and 89 deletions
|
|
@ -12,7 +12,6 @@ Follow these steps to deploy the E-Learning Platform backend to production.
|
||||||
|
|
||||||
- Production server with Node.js 18+
|
- Production server with Node.js 18+
|
||||||
- PostgreSQL database
|
- PostgreSQL database
|
||||||
- Redis server
|
|
||||||
- MinIO/S3 storage
|
- MinIO/S3 storage
|
||||||
- Domain name and SSL certificate
|
- Domain name and SSL certificate
|
||||||
|
|
||||||
|
|
@ -75,9 +74,6 @@ APP_URL=https://api.elearning.com
|
||||||
# Database
|
# Database
|
||||||
DATABASE_URL=postgresql://user:password@db-host:5432/elearning_prod
|
DATABASE_URL=postgresql://user:password@db-host:5432/elearning_prod
|
||||||
|
|
||||||
# Redis
|
|
||||||
REDIS_URL=redis://:password@redis-host:6379
|
|
||||||
|
|
||||||
# MinIO/S3
|
# MinIO/S3
|
||||||
S3_ENDPOINT=https://s3.elearning.com
|
S3_ENDPOINT=https://s3.elearning.com
|
||||||
S3_ACCESS_KEY=<access-key>
|
S3_ACCESS_KEY=<access-key>
|
||||||
|
|
|
||||||
|
|
@ -266,11 +266,7 @@ model Course {
|
||||||
}
|
}
|
||||||
```
|
```
|
||||||
|
|
||||||
### 5.2 Caching (Redis)
|
### 5.2 Rate Limiting
|
||||||
|
|
||||||
Cache course listings, user sessions, and frequently accessed data using Redis with `setEx()` for TTL.
|
|
||||||
|
|
||||||
### 5.3 Rate Limiting
|
|
||||||
|
|
||||||
Use `express-rate-limit` middleware to limit requests (e.g., 100 requests per 15 minutes).
|
Use `express-rate-limit` middleware to limit requests (e.g., 100 requests per 15 minutes).
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -119,9 +119,6 @@ APP_URL=http://localhost:4000
|
||||||
# Database
|
# Database
|
||||||
DATABASE_URL=postgresql://postgres:12345678@localhost:5432/elearning_dev
|
DATABASE_URL=postgresql://postgres:12345678@localhost:5432/elearning_dev
|
||||||
|
|
||||||
# Redis
|
|
||||||
REDIS_URL=redis://:dev_redis_password@localhost:6379
|
|
||||||
|
|
||||||
# MinIO/S3
|
# MinIO/S3
|
||||||
S3_ENDPOINT=http://localhost:9000
|
S3_ENDPOINT=http://localhost:9000
|
||||||
S3_ACCESS_KEY=admin
|
S3_ACCESS_KEY=admin
|
||||||
|
|
@ -153,7 +150,6 @@ docker compose up -d
|
||||||
|
|
||||||
This starts:
|
This starts:
|
||||||
- PostgreSQL (port 5432)
|
- PostgreSQL (port 5432)
|
||||||
- Redis (port 6379)
|
|
||||||
- MinIO (ports 9000, 9001)
|
- MinIO (ports 9000, 9001)
|
||||||
- Mailhog (ports 1025, 8025)
|
- Mailhog (ports 1025, 8025)
|
||||||
- Adminer (port 8080)
|
- Adminer (port 8080)
|
||||||
|
|
|
||||||
|
|
@ -375,14 +375,7 @@ jest.mock('../src/services/s3.service', () => ({
|
||||||
}));
|
}));
|
||||||
```
|
```
|
||||||
|
|
||||||
### Mock Redis
|
|
||||||
```javascript
|
|
||||||
jest.mock('../src/services/redis.service', () => ({
|
|
||||||
get: jest.fn(),
|
|
||||||
set: jest.fn(),
|
|
||||||
del: jest.fn()
|
|
||||||
}));
|
|
||||||
```
|
|
||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -6,10 +6,6 @@ APP_URL=http://localhost:4000
|
||||||
# Database
|
# Database
|
||||||
DATABASE_URL=postgresql://postgres:12345678@localhost:5432/elearning_dev
|
DATABASE_URL=postgresql://postgres:12345678@localhost:5432/elearning_dev
|
||||||
|
|
||||||
# Redis
|
|
||||||
REDIS_URL=redis://localhost:6379
|
|
||||||
REDIS_PASSWORD=dev_redis_password
|
|
||||||
|
|
||||||
# MinIO/S3
|
# MinIO/S3
|
||||||
S3_ENDPOINT=http://localhost:9000
|
S3_ENDPOINT=http://localhost:9000
|
||||||
S3_ACCESS_KEY=admin
|
S3_ACCESS_KEY=admin
|
||||||
|
|
|
||||||
|
|
@ -11,7 +11,6 @@ Backend API for E-Learning Platform built with TypeScript, Express, TSOA, and Pr
|
||||||
- **Role-based Authorization** - Admin, Instructor, Student roles
|
- **Role-based Authorization** - Admin, Instructor, Student roles
|
||||||
- **Multi-language Support** - Thai and English
|
- **Multi-language Support** - Thai and English
|
||||||
- **File Upload** - Video and attachment support with MinIO/S3
|
- **File Upload** - Video and attachment support with MinIO/S3
|
||||||
- **Redis Caching** - Performance optimization
|
|
||||||
- **Rate Limiting** - API protection
|
- **Rate Limiting** - API protection
|
||||||
- **Comprehensive Error Handling** - Structured error responses
|
- **Comprehensive Error Handling** - Structured error responses
|
||||||
|
|
||||||
|
|
@ -20,7 +19,6 @@ Backend API for E-Learning Platform built with TypeScript, Express, TSOA, and Pr
|
||||||
- Node.js >= 18
|
- Node.js >= 18
|
||||||
- Docker & Docker Compose
|
- Docker & Docker Compose
|
||||||
- PostgreSQL (via Docker)
|
- PostgreSQL (via Docker)
|
||||||
- Redis (via Docker)
|
|
||||||
- MinIO (via Docker)
|
- MinIO (via Docker)
|
||||||
|
|
||||||
## 🛠️ Setup
|
## 🛠️ Setup
|
||||||
|
|
|
||||||
|
|
@ -1,7 +1,7 @@
|
||||||
# Agent Skills - E-Learning Backend Development
|
# Agent Skills - E-Learning Backend Development
|
||||||
|
|
||||||
> คู่มือสำหรับ AI Agent ในการพัฒนา Backend ของระบบ E-Learning Platform
|
> คู่มือสำหรับ AI Agent ในการพัฒนา Backend ของระบบ E-Learning Platform
|
||||||
> **Tech Stack**: Node.js + Express + Prisma + PostgreSQL + Redis + MinIO (S3)
|
> **Tech Stack**: Node.js + Express + Prisma + PostgreSQL + MinIO (S3)
|
||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -50,26 +50,6 @@ services:
|
||||||
timeout: 20s
|
timeout: 20s
|
||||||
retries: 3
|
retries: 3
|
||||||
|
|
||||||
# Redis - Cache & Session Store
|
|
||||||
redis:
|
|
||||||
image: redis:7-alpine
|
|
||||||
container_name: elearning-redis
|
|
||||||
restart: unless-stopped
|
|
||||||
security_opt:
|
|
||||||
- apparmor=unconfined
|
|
||||||
ports:
|
|
||||||
- "6379:6379"
|
|
||||||
command: redis-server --appendonly yes --requirepass dev_redis_password
|
|
||||||
volumes:
|
|
||||||
- redis_data:/data
|
|
||||||
networks:
|
|
||||||
- elearning-network
|
|
||||||
healthcheck:
|
|
||||||
test: [ "CMD", "redis-cli", "--raw", "incr", "ping" ]
|
|
||||||
interval: 10s
|
|
||||||
timeout: 3s
|
|
||||||
retries: 5
|
|
||||||
|
|
||||||
# Mailhog - Email Testing
|
# Mailhog - Email Testing
|
||||||
mailhog:
|
mailhog:
|
||||||
image: mailhog/mailhog:latest
|
image: mailhog/mailhog:latest
|
||||||
|
|
@ -105,8 +85,6 @@ volumes:
|
||||||
driver: local
|
driver: local
|
||||||
minio_data:
|
minio_data:
|
||||||
driver: local
|
driver: local
|
||||||
redis_data:
|
|
||||||
driver: local
|
|
||||||
|
|
||||||
networks:
|
networks:
|
||||||
elearning-network:
|
elearning-network:
|
||||||
|
|
|
||||||
|
|
@ -274,7 +274,6 @@ CREATE INDEX idx_courses_deleted ON courses(deleted_at) WHERE deleted_at IS NULL
|
||||||
### Query Optimization
|
### Query Optimization
|
||||||
- Use `SELECT` specific columns
|
- Use `SELECT` specific columns
|
||||||
- Implement pagination
|
- Implement pagination
|
||||||
- Cache course lists in Redis
|
|
||||||
- Use database views for complex queries
|
- Use database views for complex queries
|
||||||
|
|
||||||
---
|
---
|
||||||
|
|
|
||||||
|
|
@ -22,9 +22,9 @@
|
||||||
│ ┌──────────────────────────────────────────────────────┐ │
|
│ ┌──────────────────────────────────────────────────────┐ │
|
||||||
│ │ Docker Compose Stack │ │
|
│ │ Docker Compose Stack │ │
|
||||||
│ │ │ │
|
│ │ │ │
|
||||||
│ │ ┌────────────┐ ┌────────────┐ ┌────────────┐ │ │
|
│ │ ┌────────────┐ ┌────────────┐ │ │
|
||||||
│ │ │ PostgreSQL │ │ MinIO │ │ Redis │ │ │
|
│ │ │ PostgreSQL │ │ MinIO │ │ │
|
||||||
│ │ │ Port: 5432 │ │ Port: 9000 │ │ Port: 6379 │ │ │
|
│ │ │ Port: 5432 │ │ Port: 9000 │ │ │
|
||||||
│ │ └────────────┘ └────────────┘ └────────────┘ │ │
|
│ │ └────────────┘ └────────────┘ └────────────┘ │ │
|
||||||
│ │ │ │
|
│ │ │ │
|
||||||
│ │ ┌────────────┐ ┌────────────┐ ┌────────────┐ │ │
|
│ │ ┌────────────┐ ┌────────────┐ ┌────────────┐ │ │
|
||||||
|
|
@ -52,22 +52,18 @@
|
||||||
- **Purpose**: File storage (videos, documents, images)
|
- **Purpose**: File storage (videos, documents, images)
|
||||||
- **Access**: Backend + Developers
|
- **Access**: Backend + Developers
|
||||||
|
|
||||||
### 3. Redis - Cache & Session
|
|
||||||
- **Port**: 6379
|
|
||||||
- **Purpose**: Caching, session storage, queue
|
|
||||||
- **Access**: Backend only
|
|
||||||
|
|
||||||
### 4. Mailhog - Email Testing
|
### 3. Mailhog - Email Testing
|
||||||
- **Port**: 1025 (SMTP), 8025 (Web UI)
|
- **Port**: 1025 (SMTP), 8025 (Web UI)
|
||||||
- **Purpose**: Catch all emails in development
|
- **Purpose**: Catch all emails in development
|
||||||
- **Access**: All developers
|
- **Access**: All developers
|
||||||
|
|
||||||
### 5. Adminer - Database Management
|
### 4. Adminer - Database Management
|
||||||
- **Port**: 8080
|
- **Port**: 8080
|
||||||
- **Purpose**: Web-based database management
|
- **Purpose**: Web-based database management
|
||||||
- **Access**: All developers
|
- **Access**: All developers
|
||||||
|
|
||||||
### 6. Forgejo - Git Server
|
### 5. Forgejo - Git Server
|
||||||
- **Port**: 3030 (HTTP), 2222 (SSH)
|
- **Port**: 3030 (HTTP), 2222 (SSH)
|
||||||
- **Purpose**: Self-hosted Git repository (like GitHub/GitLab)
|
- **Purpose**: Self-hosted Git repository (like GitHub/GitLab)
|
||||||
- **Access**: All developers
|
- **Access**: All developers
|
||||||
|
|
@ -152,23 +148,6 @@ services:
|
||||||
networks:
|
networks:
|
||||||
- elearning-network
|
- elearning-network
|
||||||
|
|
||||||
# Redis - Cache & Session Store
|
|
||||||
redis:
|
|
||||||
image: redis:7-alpine
|
|
||||||
container_name: elearning-redis
|
|
||||||
restart: unless-stopped
|
|
||||||
ports:
|
|
||||||
- "6379:6379"
|
|
||||||
command: redis-server --appendonly yes --requirepass dev_redis_password
|
|
||||||
volumes:
|
|
||||||
- redis_data:/data
|
|
||||||
networks:
|
|
||||||
- elearning-network
|
|
||||||
healthcheck:
|
|
||||||
test: ["CMD", "redis-cli", "--raw", "incr", "ping"]
|
|
||||||
interval: 10s
|
|
||||||
timeout: 3s
|
|
||||||
retries: 5
|
|
||||||
|
|
||||||
# Mailhog - Email Testing
|
# Mailhog - Email Testing
|
||||||
mailhog:
|
mailhog:
|
||||||
|
|
@ -226,8 +205,7 @@ volumes:
|
||||||
driver: local
|
driver: local
|
||||||
minio_data:
|
minio_data:
|
||||||
driver: local
|
driver: local
|
||||||
redis_data:
|
|
||||||
driver: local
|
|
||||||
forgejo_data:
|
forgejo_data:
|
||||||
driver: local
|
driver: local
|
||||||
|
|
||||||
|
|
@ -296,8 +274,6 @@ docker-compose logs -f postgres
|
||||||
# Test PostgreSQL
|
# Test PostgreSQL
|
||||||
docker exec -it elearning-postgres psql -U elearning -d elearning_dev -c "SELECT version();"
|
docker exec -it elearning-postgres psql -U elearning -d elearning_dev -c "SELECT version();"
|
||||||
|
|
||||||
# Test Redis
|
|
||||||
docker exec -it elearning-redis redis-cli -a dev_redis_password ping
|
|
||||||
|
|
||||||
# Test MinIO
|
# Test MinIO
|
||||||
curl http://192.168.1.100:9000/minio/health/live
|
curl http://192.168.1.100:9000/minio/health/live
|
||||||
|
|
@ -391,11 +367,6 @@ DB_NAME=elearning_dev
|
||||||
DB_USER=elearning
|
DB_USER=elearning
|
||||||
DB_PASSWORD=dev_password_change_in_prod
|
DB_PASSWORD=dev_password_change_in_prod
|
||||||
|
|
||||||
# Redis
|
|
||||||
REDIS_URL=redis://:dev_redis_password@192.168.1.100:6379
|
|
||||||
REDIS_HOST=192.168.1.100
|
|
||||||
REDIS_PORT=6379
|
|
||||||
REDIS_PASSWORD=dev_redis_password
|
|
||||||
|
|
||||||
# MinIO/S3
|
# MinIO/S3
|
||||||
S3_ENDPOINT=http://192.168.1.100:9000
|
S3_ENDPOINT=http://192.168.1.100:9000
|
||||||
|
|
@ -500,7 +471,7 @@ docker exec -it elearning-minio mc ls local/
|
||||||
| **PostgreSQL** | 192.168.1.100:5432 | elearning / dev_password_change_in_prod |
|
| **PostgreSQL** | 192.168.1.100:5432 | elearning / dev_password_change_in_prod |
|
||||||
| **MinIO Console** | http://192.168.1.100:9001 | minioadmin / minioadmin123 |
|
| **MinIO Console** | http://192.168.1.100:9001 | minioadmin / minioadmin123 |
|
||||||
| **MinIO API** | http://192.168.1.100:9000 | - |
|
| **MinIO API** | http://192.168.1.100:9000 | - |
|
||||||
| **Redis** | 192.168.1.100:6379 | Password: dev_redis_password |
|
|
||||||
| **Mailhog UI** | http://192.168.1.100:8025 | - |
|
| **Mailhog UI** | http://192.168.1.100:8025 | - |
|
||||||
| **Adminer** | http://192.168.1.100:8080 | - |
|
| **Adminer** | http://192.168.1.100:8080 | - |
|
||||||
| **Forgejo** | http://192.168.1.100:3030 | Setup on first visit |
|
| **Forgejo** | http://192.168.1.100:3030 | Setup on first visit |
|
||||||
|
|
@ -647,4 +618,4 @@ docker-compose stop
|
||||||
- [Docker Compose Documentation](https://docs.docker.com/compose/)
|
- [Docker Compose Documentation](https://docs.docker.com/compose/)
|
||||||
- [PostgreSQL Documentation](https://www.postgresql.org/docs/)
|
- [PostgreSQL Documentation](https://www.postgresql.org/docs/)
|
||||||
- [MinIO Documentation](https://min.io/docs/)
|
- [MinIO Documentation](https://min.io/docs/)
|
||||||
- [Redis Documentation](https://redis.io/documentation)
|
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue