Tài liệu hướng dẫn Triển khai Docker & PM2
Tài liệu này trình bày các quy trình triển khai chuyên nghiệp cho dự án được tạo ra của bạn, bao gồm cả môi trường container hóa với Docker và quản lý tiến trình trực tiếp qua PM2.
Chọn Chế độ Triển khai của Bạn
| Chế độ | Chiến lược | Phù hợp nhất cho | Tại sao? |
|---|---|---|---|
| Docker | Container hóa | CI/CD, Cloud, Multi-Cloud | Đồng nhất môi trường chạy ứng dụng. |
| PM2 | Quản lý Tiến trình | VPS, Máy chủ chuyên dụng | Chi phí tài nguyên thấp nhất, tốc độ tối đa. |
Triển khai bằng Docker
Dự án bao gồm một tệp Multi-Stage Dockerfile được tối ưu hóa cho các image chạy môi trường production.
1. Chạy cục bộ (Môi trường Development)
Để chạy ứng dụng Node.js cục bộ trong khi sử dụng Docker để chạy cơ sở hạ tầng (Database, Redis, Kafka, v.v.):
# Khởi động hạ tầng
docker-compose up -d db redis kafka
# Khởi động ứng dụng
npm run dev# Khởi động hạ tầng
docker-compose up -d db redis kafka
# Khởi động ứng dụng
pnpm dev# Khởi động hạ tầng
docker-compose up -d db redis kafka
# Khởi động ứng dụng
yarn dev2. Chạy ứng dụng dưới dạng Container cùng Hạ tầng Compose
Nếu bạn muốn chạy chính bản thân ứng dụng bên trong một container Docker:
# Đảm bảo hạ tầng đang chạy
docker-compose up -d
# Build Image cho môi trường Production
docker build -t your-app-name .
# Chạy Container (kết nối vào network của compose)
docker run -p 3000:3000 --network your-app-name_default \
-e DB_HOST=db \
-e REDIS_HOST=redis \
your-app-name# Đảm bảo hạ tầng đang chạy
docker-compose up -d
# Build Image cho môi trường Production
docker build -t your-app-name .
# Chạy Container (kết nối vào network của compose)
docker run -p 3000:3000 --network your-app-name_default \
-e REDIS_HOST=redis \
-e KAFKA_BROKER=kafka:29092 \
your-app-name# Build Image cho môi trường Production
docker build -t your-app-name .
# Chạy Container
docker run -p 3000:3000 your-app-name# Đảm bảo hạ tầng và ELK đang chạy
docker-compose up -d db redis kafka
docker-compose -f docker-compose.elk.yml up -d
# Build Image cho môi trường Production
docker build -t your-app-name .
# Chạy Container (kết nối vào network của compose)
docker run -p 3000:3000 --network your-app-name_default \
-e DB_HOST=db \
-e REDIS_HOST=redis \
-e ELASTICSEARCH_URL=http://elasticsearch:9200 \
your-app-nameTriển khai bằng PM2 (VPS/EC2)
Dự án được cấu hình sẵn để triển khai trực tiếp lên máy chủ VPS/EC2 bằng công cụ PM2 (thông qua tệp ecosystem.config.js).
1. Các bước triển khai
Cài đặt phụ thuộc:
bashnpm installbashpnpm installbashyarn installKhởi động Hạ tầng (các dịch vụ nền):
bashdocker-compose up -d db redis kafka # Tùy chọn: Khởi động ELK stack cho ghi log tập trung docker-compose -f docker-compose.elk.yml up -dĐợi từ 5-10 giây để cơ sở dữ liệu khởi tạo hoàn tất.
Triển khai Ứng dụng bằng PM2 ở Chế độ Cluster: Đối với dự án TypeScript:
bash# Build dự án và triển khai npm run build npm run deploybashpnpm build pnpm deploybashyarn build yarn deployĐối với dự án JavaScript:
bash# Triển khai trực tiếp npm run deploybashpnpm deploybashyarn deploy
2. Quản lý Tiến trình
| Lệnh | Hành động |
|---|---|
npx pm2 logs | Xem log của ứng dụng theo thời gian thực |
npx pm2 status | Kiểm tra trạng thái ứng dụng |
npx pm2 stop all | Dừng tất cả các tiến trình |
npx pm2 delete your-app-name | Gỡ ứng dụng khỏi sự quản lý của PM2 |
THU DỌN HẠ TẦNG
Khi muốn dừng hệ thống, đừng quên dừng các container hạ tầng bên dưới:
docker-compose down
# Tùy chọn: Dừng cụm ELK stack
docker-compose -f docker-compose.elk.yml down