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.
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
- 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ìnhuser: rootđể Jenkins khi ghi tệp tin vào thư mục./datacủa Host (chạy hệ điều hành Linux) sẽ không gặp lỗi phân quyền (Permission Denied). - 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_dumpvàmongodumpbê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 SAVEtrong 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.rdbvà 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.
- PostgreSQL & MongoDB: Chạy các script backup trực tiếp gọi
- 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ý.
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!