Website được thiết kế tối ưu cho thành viên chính thức. Hãy Đăng nhập hoặc Đăng ký để truy cập đầy đủ nội dung và chức năng. Nội dung bạn cần không thấy trên website, có thể do bạn chưa đăng nhập. Nếu là thành viên của website, bạn cũng có thể yêu cầu trong nhóm Zalo "CNTT" các nội dung bạn quan tâm.

4. Chuẩn hóa cấu trúc thư mục và nguyên tắc quản lý container

ICT

Sau khi cài đặt Docker và Docker Compose, bước quan trọng tiếp theo là chuẩn hóa cấu trúc thư mục và nguyên tắc quản lý container.
Với Web Server chạy nhiều website, đặc biệt là các hệ thống CMS, việc chuẩn hóa ngay từ đầu quyết định trực tiếp đến độ ổn định, khả năng mở rộng và mức độ rủi ro khi vận hành lâu dài.

Trong bài này, kiến trúc được thống nhất theo nguyên tắc:

Mỗi Docker MariaDB phục vụ cho một nhóm website có đặc tính giống nhau, không phải cho từng site đơn lẻ.


1. Nguyên tắc thiết kế cấu trúc Docker cho Web Server

1.1. Nhóm site theo đặc tính vận hành, không theo số lượng

Việc tách MariaDB không nên làm theo kiểu:

  • Mỗi site một database container (quá phân mảnh)

  • Một database cho tất cả site (rủi ro cao)

Thay vào đó, nhóm site theo:

  • Chức năng (web giới thiệu, hệ thống nghiệp vụ, nội dung số…)

  • Mức độ tải

  • Chính sách backup / replication

  • Mức độ quan trọng và rủi ro

Mỗi nhóm sẽ dùng một MariaDB container riêng.


1.2. Tách rõ 4 lớp: code – cấu hình – dữ liệu – backup

  • Code: source web, không phụ thuộc Docker

  • Cấu hình: docker-compose, env, config service

  • Dữ liệu: database runtime

  • Backup: dữ liệu sao lưu có vòng đời riêng

Tuyệt đối không:

  • Để dữ liệu sống trong container

  • Trộn backup của nhiều nhóm site vào một chỗ


2. Cấu trúc thư mục Docker khuyến nghị

2.1. Thư mục gốc Docker

 
/srv/docker/

Thư mục này chỉ dùng cho Docker service, không trộn code website.


2.2. Phân nhóm theo loại dịch vụ

2.3. Cấu trúc MariaDB theo nhóm site

Ý nghĩa kiến trúc:

  • sites_web: nhóm website giới thiệu, nội dung, tải nhẹ

  • sites_qms: nhóm hệ thống nghiệp vụ, dữ liệu quan trọng

  • sites_art: nhóm site nội dung số, media, ít giao dịch

Mỗi thư mục = 1 MariaDB instance độc lập.


3. Chuẩn hóa nội dung trong từng nhóm MariaDB

3.1. docker-compose.yml

  • Chỉ mô tả service MariaDB

  • Mount volume cho dataconf.d

  • Không hard-code mật khẩu

  • Cấu hình restart policy, healthcheck


3.2. File .env – quản lý biến môi trường

Ví dụ:

 
MYSQL_ROOT_PASSWORD=***
TZ=Asia/Ho_Chi_Minh

Lưu ý:

  • Không tạo database mặc định nếu trong container có nhiều DB

  • Database và user sẽ được tạo thủ công theo từng site

  • Mỗi nhóm site dùng chung một instance nhưng user và database tách biệt


3.3. Thư mục conf.d/

Dùng cho:

  • my.cnf tuning theo đặc thù nhóm site

  • InnoDB buffer, log, charset

  • Khác nhau giữa sites_websites_qms


3.4. Thư mục data/

  • Chứa toàn bộ dữ liệu runtime của MariaDB instance

  • Không chỉnh tay

  • Backup trước mọi thay đổi lớn


3.5. Thư mục backup/

  • Backup theo nhóm site

  • Có thể backup từng database riêng

  • Áp dụng chính sách retention khác nhau


4. Nguyên tắc quản lý database trong cùng một MariaDB container

4.1. Mỗi site = một database + một user

  • Không dùng chung user

  • Không cấp quyền chéo giữa các database

Giúp:

  • Giảm rủi ro bảo mật

  • Dễ truy vết sự cố

  • Dễ di chuyển site sang nhóm khác nếu cần


4.2. Không dùng root cho ứng dụng

  • Root chỉ dùng cho quản trị

  • App user chỉ có quyền trên database của mình


5. Nguyên tắc quản lý container MariaDB

5.1. Đặt tên container theo nhóm site

Ví dụ:

container_name: mariadb_art 

Giúp:

  • Phân biệt nhanh khi debug

  • Dễ theo dõi log và tài nguyên


5.2. Không chỉnh sửa container đang chạy

  • Mọi thay đổi qua file cấu hình

  • Restart có kiểm soát


5.3. Không gom quá nhiều nhóm vào một MariaDB

Nguyên tắc:

  • Nếu nhóm site có đặc tính khác biệt → tách container

  • Nếu một nhóm tăng tải → tách tiếp thành sites_qms_1, sites_qms_2


6. Network Docker cho MariaDB theo nhóm

  • MariaDB chỉ nằm trong backend_net hoặc db_net

  • Không expose ra Internet

  • Web/PHP container được cấp quyền truy cập theo nhóm


7. Chuẩn hóa vòng đời vận hành

7.1. Quy trình thay đổi chuẩn

  1. Backup toàn bộ instance

  2. Kiểm tra dung lượng và tài nguyên

  3. Cập nhật cấu hình

  4. Restart container

  5. Kiểm tra log, truy vấn, ứng dụng


8. Kết luận

Mô hình mỗi MariaDB container cho một nhóm site giống nhau giúp:

  • Cân bằng giữa cách ly và đơn giản

  • Dễ quản lý, dễ backup

  • Hạn chế rủi ro lan truyền lỗi

  • Phù hợp Web Server chạy nhiều hệ thống song song

Chuẩn hóa cấu trúc thư mục và nguyên tắc quản lý container ngay từ đầu là nền tảng để các bài sau về triển khai Web Server, MariaDB, backup và tối ưu có thể áp dụng một cách an toàn và hiệu quả.