Skip to content

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ượcPhù hợp nhất choTại sao?
DockerContainer hóaCI/CD, Cloud, Multi-CloudĐồng nhất môi trường chạy ứng dụng.
PM2Quản lý Tiến trìnhVPS, Máy chủ chuyên dụngChi 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.):

bash
# Khởi động hạ tầng
docker-compose up -d db redis kafka

# Khởi động ứng dụng
npm run dev
bash
# Khởi động hạ tầng
docker-compose up -d db redis kafka

# Khởi động ứng dụng
pnpm dev
bash
# Khởi động hạ tầng
docker-compose up -d db redis kafka

# Khởi động ứng dụng
yarn dev

2. 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:

bash
# Đả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
bash
# Đả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
bash
# 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
bash
# Đả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-name

Triể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

  1. Cài đặt phụ thuộc:

    bash
    npm install
    bash
    pnpm install
    bash
    yarn install
  2. Khởi động Hạ tầng (các dịch vụ nền):

    bash
    docker-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
  3. Đợi từ 5-10 giây để cơ sở dữ liệu khởi tạo hoàn tất.

  4. 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 deploy
    bash
    pnpm build
    pnpm deploy
    bash
    yarn build
    yarn deploy

    Đối với dự án JavaScript:

    bash
    # Triển khai trực tiếp
    npm run deploy
    bash
    pnpm deploy
    bash
    yarn deploy

2. Quản lý Tiến trình

LệnhHành động
npx pm2 logsXem log của ứng dụng theo thời gian thực
npx pm2 statusKiểm tra trạng thái ứng dụng
npx pm2 stop allDừng tất cả các tiến trình
npx pm2 delete your-app-nameGỡ ứ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:

bash
docker-compose down
# Tùy chọn: Dừng cụm ELK stack
docker-compose -f docker-compose.elk.yml down

Phát hành theo giấy phép ISC.
Kiến trúc bởi các Technical Writer trên System Weakness. NPM Downloads GitHub Stars