Sau khi đã làm quen với Docker Compose ở phần trước, bước tiếp theo là áp dụng Docker vào một bài toán thực tế hơn: triển khai ứng dụng web. Đây là giai đoạn quan trọng, vì Docker không chỉ giúp đóng gói ứng dụng mà còn giúp việc chạy và chuyển giao giữa các môi trường trở nên nhất quán hơn. Trong bài viết này, chúng ta sẽ tìm hiểu cách triển khai một ứng dụng web bằng Docker, từ việc xây dựng image, chạy container cho đến phối hợp nhiều dịch vụ bằng Docker Compose.
Với ứng dụng web, Docker cho phép đóng gói toàn bộ mã nguồn, thư viện và môi trường chạy vào container. Nhờ đó, ứng dụng có thể hoạt động giống nhau trên máy cá nhân, máy kiểm thử hay máy chủ production. Đây là ưu điểm lớn so với cách triển khai truyền thống vốn phụ thuộc nhiều vào cấu hình thủ công của từng hệ thống.
Không chỉ vậy, Docker còn giúp việc cập nhật phiên bản, mở rộng hệ thống và khôi phục khi có lỗi trở nên thuận tiện hơn. Thay vì cài đặt lại từ đầu, ta chỉ cần chạy đúng image đã được chuẩn bị sẵn.
Giả sử ta có một ứng dụng Node.js nhỏ. Để triển khai bằng Docker, trước hết cần viết Dockerfile mô tả cách tạo image:
Dockerfile này cho biết ứng dụng sẽ chạy trên nền Node.js, cài các thư viện cần thiết, sao chép mã nguồn vào container và mở cổng 3000 để phục vụ truy cập.
Sau đó, image được build bằng lệnh:
docker build -t my-web-app .
Khi đã có image, ta có thể chạy ứng dụng bằng:
docker run -d -p 3000:3000 --name web-app my-web-app
Lúc này, ứng dụng đã sẵn sàng truy cập thông qua trình duyệt ở cổng tương ứng.
Trong thực tế, một ứng dụng web thường không chỉ có một container duy nhất mà còn đi kèm cơ sở dữ liệu hoặc các dịch vụ hỗ trợ khác. Khi đó, Docker Compose là công cụ phù hợp để quản lý toàn bộ hệ thống.
Ví dụ, một file docker-compose.yml có thể khai báo cả ứng dụng web và cơ sở dữ liệu:
Compose giúp việc triển khai dễ quản lý hơn, đặc biệt khi ứng dụng có nhiều thành phần cần phối hợp.
Khi đưa ứng dụng web vào môi trường thực tế, cần chú ý đến dữ liệu và cấu hình. Những thành phần như cơ sở dữ liệu nên dùng volume để tránh mất dữ liệu khi container bị xóa. Ngoài ra, các thông tin như mật khẩu hay biến môi trường không nên ghi cứng trong mã nguồn hoặc Dockerfile.
Bên cạnh đó, nên ưu tiên image gọn nhẹ để tối ưu tốc độ build và triển khai. Việc theo dõi log container cũng rất quan trọng để phát hiện sớm lỗi khi ứng dụng vận hành.
Triển khai ứng dụng web bằng Docker là bước quan trọng giúp quá trình phát triển và vận hành phần mềm trở nên hiện đại, nhất quán và dễ tái sử dụng hơn. Từ một ứng dụng đơn giản cho đến hệ thống nhiều dịch vụ, Docker đều cung cấp cách tiếp cận rõ ràng và hiệu quả.
Sau phần này, người học đã có thể hình dung cách đưa một web app vào container và khởi chạy nó trong môi trường thực tế. Đây cũng là nền tảng để tiếp tục tìm hiểu các chủ đề nâng cao hơn như volume, bảo mật container hay CI/CD với Docker.
» Các tin khác: