Docker - Xây dựng một Máy chủ Web

Xin chào, các bạn đang học lập trình! Hôm nay, chúng ta sẽ bắt đầu một hành trình thú vị vào thế giới của Docker và các máy chủ web. Là người dạy máy tính gần gũi của bạn, tôi sẽ hướng dẫn bạn từng bước trong cuộc phiêu lưu này. Đừng lo lắng nếu bạn mới bắt đầu học lập trình - chúng ta sẽ bắt đầu từ những điều cơ bản và dần dần nâng cao. Vậy, hãy lấy một tách cà phê (hoặc đồ uống yêu thích của bạn) và cùng nhau bắt đầu!

Docker - Web Server

Hiểu về Docker và Máy chủ Web

Docker là gì?

Hãy tưởng tượng bạn đang chuyển đến một ngôi nhà mới. Thay vì打包 mọi thứ vào những hộp ngẫu nhiên, bạn sẽ sắp xếp đồ đạc của mình một cách ngăn nắp vào các thùng có nhãn. Đó chính xác là điều Docker làm cho phần mềm! Nó đóng gói các ứng dụng và các phụ thuộc của chúng vào các đơn vị tiêu chuẩn gọi là container. Điều này giúp dễ dàng di chuyển, triển khai và chạy các ứng dụng một cách nhất quán trên các môi trường khác nhau.

Máy chủ Web là gì?

Một máy chủ web giống như một nhân viên phục vụ kỹ thuật số trong một nhà hàng. Khi bạn gõ địa chỉ website vào trình duyệt của mình, máy chủ web sẽ nhận yêu cầu của bạn, lấy các trang web phù hợp và phục vụ chúng cho bạn. Nó là xương sống của internet, đảm bảo rằng bạn có thể truy cập các trang web bất cứ khi nào bạn muốn.

Tạo một Máy chủ Web Đơn giản với Docker

Bước 1: Thiết lập Môi trường

Trước tiên, hãy chắc chắn rằng chúng ta đã cài đặt Docker trên máy tính của mình. Nếu bạn chưa làm điều này, hãy truy cập trang web chính thức của Docker và làm theo hướng dẫn cài đặt cho hệ điều hành của bạn.

Bước 2: Tạo một Tệp HTML Đơn giản

Hãy bắt đầu bằng cách tạo một tệp HTML đơn giản mà máy chủ web của chúng ta sẽ hiển thị. Tạo một tệp mới có tên index.html với nội dung sau:

<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>My Docker Web Server</title>
</head>
<body>
<h1>Hello, Docker World!</h1>
<p>This is a simple web page served by Docker.</p>
</body>
</html>

Tệp HTML này tạo ra một trang web cơ bản với một tiêu đề và một đoạn văn bản. Nó giống như viết một lá thư đơn giản mà máy chủ web của chúng ta sẽ gửi đến khách truy cập.

Bước 3: Tạo Dockerfile

Bây giờ, hãy tạo Dockerfile của chúng ta. Đây giống như một công thức mà Docker sẽ sử dụng để xây dựng container máy chủ web của chúng ta. Tạo một tệp mới có tên Dockerfile (không có phần mở rộng tệp) với nội dung sau:

FROM nginx:alpine
COPY index.html /usr/share/nginx/html/index.html

Giải thích:

  • FROM nginx:alpine: Điều này cho Docker biết sử dụng hình ảnh chính thức của Nginx dựa trên Alpine Linux làm điểm bắt đầu.
  • COPY index.html /usr/share/nginx/html/index.html: Điều này sao chép tệp HTML của chúng ta vào thư mục mặc định mà Nginx tìm kiếm các trang web.

Bước 4: Xây dựng Hình ảnh Docker

Bây giờ chúng ta đã có Dockerfile, hãy xây dựng hình ảnh Docker của mình. Mở terminal, điều hướng đến thư mục chứa Dockerfile và index.html, và chạy lệnh:

docker build -t my-web-server .

Lệnh này cho Docker biết xây dựng một hình ảnh dựa trên Dockerfile và đánh dấu nó là "my-web-server". Dấu chấm ở cuối cho Docker biết tìm Dockerfile trong thư mục hiện tại.

Bước 5: Chạy Container Docker

Chúng ta sắp hoàn thành! Hãy chạy container Docker của mình:

docker run -d -p 8080:80 my-web-server

Lệnh này thực hiện các hành động sau:

  • -d: Chạy container ở chế độ tách biệt (trong nền)
  • -p 8080:80: Chuyển hướng cổng 8080 trên máy tính của bạn đến cổng 80 trong container
  • my-web-server: Tên của hình ảnh Docker của chúng ta

Kiểm tra Máy chủ Web

Bây giờ là lúc thử nghiệm! Mở trình duyệt web của bạn và truy cập http://localhost:8080. Bạn nên thấy thông báo "Hello, Docker World!". Chúc mừng! Bạn vừa tạo và triển khai một máy chủ web bằng Docker!

Chủ đề Nâng cao

Tùy chỉnh Cấu hình Nginx

Nếu chúng ta muốn tùy chỉnh cách máy chủ web của mình hoạt động thế nào? Chúng ta có thể làm điều đó bằng cách thay đổi cấu hình Nginx. Hãy tạo một tệp cấu hình Nginx tùy chỉnh có tên nginx.conf:

server {
listen 80;
server_name localhost;

location / {
root /usr/share/nginx/html;
index index.html;
}

location /api {
return 200 '{"message": "This is a sample API response"}';
add_header Content-Type application/json;
}
}

Cấu hình này thực hiện hai điều:

  1. Nó phục vụ tệp HTML của chúng ta như trước.
  2. Nó tạo một endpoint API đơn giản tại /api trả về một phản hồi JSON.

Bây giờ, hãy cập nhật Dockerfile của chúng ta để sử dụng cấu hình này:

FROM nginx:alpine
COPY index.html /usr/share/nginx/html/index.html
COPY nginx.conf /etc/nginx/conf.d/default.conf

Rebuild hình ảnh Docker của bạn và chạy nó lại. Bây giờ, nếu bạn truy cập http://localhost:8080/api, bạn sẽ thấy phản hồi JSON!

Kết luận

Và thế là bạn đã có, các bạn! Chúng ta đã cùng nhau từ những điều cơ bản của Docker và máy chủ web đến việc tạo ra một container máy chủ web tùy chỉnh. Nhớ rằng, đây chỉ là bắt đầu. Thế giới của Docker và phát triển web rất rộng lớn và thú vị, với vô số khả năng để khám phá.

Dưới đây là một bảng tóm tắt các phương thức chúng ta đã học:

Phương thức Mô tả
docker build Xây dựng một hình ảnh Docker từ một Dockerfile
docker run Tạo và khởi động một container Docker
docker ps Liệt kê các container Docker đang chạy
docker stop Dừng một container Docker đang chạy
docker rm Xóa một container Docker

Tiếp tục thực hành, tiếp tục khám phá, và quan trọng nhất, hãy vui vẻ với lập trình! Ai biết được, ứng dụng web lớn tiếp theo có thể chỉ cách nhau vài container Docker. Hẹn gặp lại các bạn, chúc các bạn lập trình vui vẻ!

Credits: Image by storyset