Giới thiệu
Web tĩnh đơn giản chỉ là tập hợp của các tệp tin HTML, CSS, JavaScript, người dùng sẽ truy cập vào tệp tin HTML để thu về trang web với nội dung được viết sẵn trong đó. Hiện nay các ứng dụng Web App Frontend sẽ được xây dựng và tạo ra web tĩnh, ngoại trừ việc trong web tĩnh này có các thành phần tương tác tốt hơn so với web tĩnh truyền thống chỉ hiển thị thông tin.
Trong bài viết này, chúng ta sẽ tạo ra Docker Image cho một web tĩnh.
Chuẩn bị
- Clone source code về máy:
https://github.com/gbaeke/static-web - Test
source code, truy cập vàosource codevà ở tệp tinindex.htmlbằng trình duyệt - Máy đã cài đặt
Docker
Xây dựng Image
Bước 1. Viết Dockerfile
Tạo tệp tin Dockerfile trong source code có nội dung sau:
FROM nginx:1.24.0-alpine
# Nginx phục vụ các tệp tin html và source code web tĩnh trong thư mục /usr/share/nginx/html
# Copy source code vào thư mục /usr/share/nginx/html
COPY . /usr/share/nginx/html
# Khai báo cổng của web tĩnh trên nginx là 80 trong image, cổng mặc định khi nginx hoạt động
EXPOSE 80
# Lệnh chạy nginx
ENTRYPOINT ["nginx", "-g", "daemon off;"]
Bước 2. Build Image từ Dockerfile
Chạy lệnh sau để build image cho web tĩnh:
- Từ tệp tin
Dockerfile - Image:
slick:v1
docker build -t slick:v1 -f Dockerfile .
-t slick:v1: chúng ta khai báo tên và tag cho image được tạo ra làslick:v1-f Dockerfile: chúng ta chỉ định rõ tệp tinDockerfilesử dụng cho quá trìnhbuild image.Là thư mục hiện tại, làbuild context, để quá trìnhbuild imagecó thể sao chép thư mục hoặc tệp tin vào trongimage.
Bước 3: Kiểm tra image
Liệt kê các image có trong Docker host:
docker images
# docker images | grep slick

Bạn sẽ thấy có image với tên là slick và tag v1
Bước 4: Push image lên Docker Hub
Để đưa image lên Docker Hub, chúng ta cần có sẵn account, và ghi nhớ tên của tài khoản này
Các image để lưu trữ được trên Docker Hub sẽ có dạng <username>/<image_name>:<image_tag> (1).
Ví dụ với user là dothiengiang0001, image là slick:v1 => dothiengiang0001/slick:v1
Trong Docker, có một cú pháp để chúng ta tạo mới một image từ một image có sẵn: docker tag <image_source> <image_dest>
Chúng ta sẽ tạo image có dạng (1) từ image slick:v1
docker tag slick:v1 <username>/slick:v1
# ví dụ
# docker tag slick:v1 dothiengiang0001/slick:v1
Sau khi đã chạy câu lệnh tag, kiểm tra images mới đã tạo:
docker image ls

Tiếp tục, nếu chưa login vào Docker Hub, chúng ta sẽ login với Docker Hub bằng lệnh, hoặc bạn có thể sử dụng Docker Desktop để login.
# Lệnh login bằng docker cli
docker login
# Nếu chưa đăng nhập trước đó, bạn sẽ được yêu cầu nhập vào tài khoản, mật khẩu(giống với thông tin đăng nhập cho docker hub).
Bước áp chót, chúng ta thực hiện lệnh push để đẩy image:
# cú pháp
docker push <username>/<image_name>:<image_tag>
# ví dụ
# docker push dothiengiang0001/slick:v1
Thực thi tạo container từ image
Yêu cầu:
- Đưa
containerxuống chạy ngầm - Đặt tên cho container là
slick-static - Tạo cổng kết nối thông từ 8866 trên
hostvào cổng 80 bên trong container(ứng dụngnginxtrongimageđã khai báo) Imagechúng ta đã tạo ở bước trướcslick:v1
Tạo container từ image ở bước trước:
docker run -itd --name slick-static -p 8866:80 slick:v1
Và test thành quả với lệnh curl localhost:8866 hoặc thực hiện port forwarding trên virtual box để hiển thị kết quả trên trình duyệt trên trình duyệt.
Thực thi container trên browser window
Trên Virtualbox -> Settings -> Network và thiết lập như hình:
Lưu lại và khởi động lại VirutalBox.
Ở đây chúng ta thực thi trên http://127.0.0.120:8866/ và xem kết quả:
Kết luận
- Trong bài viết này, chúng ta đã đi qua quy trình chi tiết để xây dựng và triển khai một web tĩnh đơn giản sử dụng Docker. Các bước từ chuẩn bị mã nguồn, viết Dockerfile, xây dựng image, kiểm tra image, đẩy image lên Docker Hub, và cuối cùng là chạy container từ image đã tạo đều được thực hiện một cách tuần tự và rõ ràng. Với việc sử dụng Docker, chúng ta không chỉ đảm bảo tính nhất quán trong môi trường triển khai mà còn tăng cường khả năng mở rộng và quản lý ứng dụng dễ dàng hơn.
- Việc tạo và chạy một container cho một web tĩnh như trên cũng là một ví dụ minh họa cho cách sử dụng Docker để triển khai các ứng dụng web khác. Các bước này có thể được tùy chỉnh và mở rộng cho các dự án phức tạp hơn. Docker đã chứng tỏ mình là một công cụ mạnh mẽ và linh hoạt, hỗ trợ tốt cho quá trình phát triển và triển khai ứng dụng hiện đại. Hy vọng qua bài viết này, bạn đã nắm vững hơn cách sử dụng Docker để quản lý và triển khai các ứng dụng web tĩnh của mình.
Tác giả: Đỗ Thiên Giang
Chú ý: Tất cả các bài viết trên TEDU.COM.VN đều thuộc bản quyền TEDU, yêu cầu dẫn nguồn khi trích lại trên website khác.
