Skip to content

Latest commit

 

History

History
70 lines (55 loc) · 6.34 KB

File metadata and controls

70 lines (55 loc) · 6.34 KB

Walkthrough: Triển khai Docker Stacks Hạ tầng Cá nhân

Chúng ta đã thiết kế và triển khai thành công 5 stack Docker Compose độc lập, an toàn và dễ sử dụng cho: Jenkins, PostgreSQL, MongoDB, Redis, và Nginx.


1. Cấu trúc Thư mục Đã Tạo

Hạ tầng được triển khai tại thư mục gốc infrastructure với cấu trúc:

  • README.md: Hướng dẫn chung toàn bộ repo.
  • jenkins-stack/: Chạy Jenkins Server (LTS JDK21).
    • docker-compose.yml
    • .env.example
    • scripts/backup.sh & scripts/restore.sh
    • .gitignore & README.md
  • postgres-stack/: Chạy PostgreSQL (v17).
    • docker-compose.yml
    • .env.example
    • scripts/backup.sh & scripts/restore.sh
    • .gitignore & README.md
  • mongodb-stack/: Chạy MongoDB (v8.0).
    • docker-compose.yml
    • .env.example
    • scripts/backup.sh & scripts/restore.sh
    • .gitignore & README.md
  • redis-stack/: Chạy Redis (v7.4 Alpine).
    • docker-compose.yml
    • .env.example
    • scripts/backup.sh & scripts/restore.sh
    • .gitignore & README.md
  • nginx-stack/: Chạy Nginx (v1.27 Alpine).
    • docker-compose.yml
    • .env.example
    • config/nginx.conf & config/conf.d/default.conf
    • html/index.html (Landing page tuyệt đẹp dạng Glassmorphism)
    • scripts/backup.sh & scripts/restore.sh
    • .gitignore & README.md

2. Điểm Nổi Bật về Kỹ Thuật

  1. Chạy dưới quyền root cho Jenkins để tránh lỗi Permission cục bộ: Trong jenkins-stack/docker-compose.yml, chúng ta đặt cấu hình user: root để Jenkins khi ghi tệp tin vào thư mục ./data của Host (chạy hệ điều hành Linux) sẽ không gặp lỗi phân quyền (Permission Denied).
  2. Backup/Restore cơ sở dữ liệu đúng cách:
    • PostgreSQL & MongoDB: Chạy các script backup trực tiếp gọi pg_dump và mongodump bên trong container. Tự động kiểm tra trạng thái container: nếu container đang dừng, script sẽ tự khởi chạy tạm thời, chờ DB khởi động hoàn tất (pg_isready / mongosh ping), tiến hành dump dữ liệu ra file nén, rồi tự động tắt container đi để giữ máy chủ sạch sẽ.
    • Redis: Vì Redis lưu trữ chủ yếu trên RAM và ghi đồng bộ xuống disk định kỳ, script backup sẽ thực hiện lệnh redis-cli SAVE trong container để ép ghi dữ liệu mới nhất xuống ổ đĩa, sau đó nén thư mục dữ liệu ./data (gồm file .rdb và thư mục .aof). Script restore sẽ dừng container Redis trước để đảm bảo ghi đè các file mà không bị Redis trong RAM lưu đè lại khi shutdown.
  3. Thiết kế Nginx Dashboard Hiện Đại: Mặc định khi chạy Nginx Stack, bạn sẽ truy cập được một Landing Page tuyệt đẹp có thiết kế Glassmorphism trên nền chuyển sắc tối, liệt kê trạng thái của tất cả các stack trong hệ thống để quản lý.

3. Xác thực & Kiểm thử cấu hình

Chúng ta đã xác thực toàn bộ các tệp cấu hình docker-compose.yml bằng cách sao chép tạm .env.example thành .env rồi chạy lệnh kiểm tra cấu hình của Docker Compose. Kết quả kiểm tra đều thành công hoàn hảo:

jenkins-stack configuration is VALID
mongodb-stack configuration is VALID
nginx-stack configuration is VALID
postgres-stack configuration is VALID
redis-stack configuration is VALID

Đồng thời, tất cả các tệp kịch bản sao lưu/khôi phục dưới định dạng .sh đều đã được cấp quyền thực thi (chmod +x).


Hạ tầng của bạn hiện đã hoàn tất, sạch sẽ và sẵn sàng để chạy trên bất kỳ VPS nào chỉ với lệnh docker compose up -d!