Thêm và cấu hình website dựa trên Docker container trong ServBay
ServBay là một môi trường phát triển web local được thiết kế riêng cho macOS, hỗ trợ nhiều ngôn ngữ và nền tảng công nghệ. Ngoài việc vận hành trực tiếp các phần mềm tích hợp sẵn của ServBay (như PHP, Node.js, Python, Go, Java, các cơ sở dữ liệu...) để host website, bạn còn có thể sử dụng Docker container để chạy và quản lý website hay dịch vụ của mình. Phương pháp này mang đến sự linh hoạt vượt trội, khả năng phân tách môi trường và đảm bảo tính nhất quán, đặc biệt phù hợp cho các dự án yêu cầu môi trường hoặc phụ thuộc đặc biệt.
Bài viết này sẽ hướng dẫn chi tiết từng bước cách thêm một website chạy trên Docker container vào ServBay, tích hợp vào quy trình phát triển local của bạn nhờ chức năng reverse proxy của ServBay.
Tổng quan
Bằng cách cấu hình ServBay làm reverse proxy, bạn có thể chuyển tiếp các request tên miền cụ thể đến cổng dịch vụ đang chạy bên trong Docker container. ServBay chịu trách nhiệm xử lý lưu lượng vào (ví dụ: cấp phát chứng chỉ HTTPS, phân giải tên miền...), còn Docker container chỉ tập trung chạy ứng dụng của bạn. Mô hình này kết hợp sự tiện lợi từ giao diện quản lý của ServBay với sức mạnh container hóa của Docker.
Các bước dưới đây sẽ hướng dẫn bạn quy trình hoàn chỉnh để thêm và cấu hình một website chạy bằng Docker trên ServBay.
Điều kiện tiên quyết
Trước khi bắt đầu, hãy đảm bảo bạn đã đáp ứng đủ các điều kiện sau:
- Đã cài đặt và chạy ServBay: ServBay đã được cài đặt thành công và khởi động trên macOS của bạn.
- Đã cài đặt và chạy Docker: Docker Desktop hoặc một môi trường Docker khác đã được cài trên macOS và dịch vụ Docker đang hoạt động.
- Đã chuẩn bị sẵn Docker image và container: Bạn đã build hoặc pull Docker image chứa website hoặc ứng dụng của mình, và có thể khởi động container từ image đó.
Hướng dẫn chi tiết thêm website
Bước 1: Chuẩn bị và chạy Docker container
Đầu tiên, bạn cần đảm bảo Docker container của bạn đã được chạy, và dịch vụ bên trong container (ví dụ: máy chủ web) đang lắng nghe một cổng đã được xuất ra bên ngoài bằng chức năng port mapping của Docker đến một port khả dụng trên máy macOS.
Ví dụ, nếu bạn có một container Nginx đơn giản, Nginx bên trong container lắng nghe cổng 80, bạn có thể chạy lệnh sau để ánh xạ cổng 8080 trên máy sang cổng 80 của container:
docker run -d --name my-nginx-servbay -p 8080:80 nginx
Trong ví dụ này, dịch vụ Nginx bên trong container my-nginx-servbay
lắng nghe cổng 80
, nhưng với tham số -p 8080:80
, chúng ta đã ánh xạ cổng 80
của container sang cổng 8080
trên máy chủ (máy macOS). ServBay sẽ kết nối đến cổng 8080
này trên máy của bạn.
Hãy kiểm tra lại theo ứng dụng thực tế và cấu hình Dockerfile để chắc chắn dịch vụ bên trong container đang lắng nghe đúng cổng, đồng thời ánh xạ đúng cổng ra ngoài máy chủ vật lý.
Bước 2: Mở giao diện quản lý ServBay
Trong thư mục Ứng dụng của macOS, tìm biểu tượng ứng dụng ServBay
và nhấp đúp để mở giao diện quản lý của ServBay.
Bước 3: Điều hướng đến trang quản lý website
Sau khi mở ServBay, bạn sẽ thấy giao diện chính. Ở thanh điều hướng bên trái, tìm và nhấn vào mục Website
. Thao tác này sẽ đưa bạn đến trang quản lý website của ServBay, nơi bạn có thể xem và cấu hình toàn bộ các website local đã thêm.
Hình minh họa: Nhấn vào mục “Website” bên thanh menu trái để vào trang quản lý.
Bước 4: Thêm website mới
Ở phía dưới của trang quản lý website, bạn sẽ thấy nút +
. Nhấn vào nút này, ServBay sẽ hiển thị một biểu mẫu mới bên phải để bạn nhập thông tin cấu hình cho website mới.
Hình minh họa: Nhấn nút “+” ở dưới cùng để thêm website mới.
Bước 5: Cấu hình các cài đặt của website
Trong biểu mẫu cấu hình website vừa mở, bạn cần điền các thông tin quan trọng sau:
- Tên (Name): Đặt tên dễ nhận biết cho website, ví dụ
Docker Nginx Demo
. Tên này chỉ để phục vụ quản lý nội bộ trong ServBay. - Tên miền (Domain): Nhập domain bạn muốn sử dụng để truy cập website Docker này trên trình duyệt. Khuyến nghị dùng hậu tố
.servbay.demo
để tránh xung đột với các domain công cộng, ví dụdocker.servbay.demo
. ServBay sẽ tự động cấu hình file hosts trỏ domain này về local (127.0.0.1
). - Giao thức (Protocol): Chọn giao thức mà website hỗ trợ. Thông thường, cứ giữ mặc định là
HTTP/HTTPS
. ServBay sẽ đồng thời lắng nghe trên cổng HTTP (80) và HTTPS (443), xử lý tùy thuộc vào cài đặt SSL của bạn. - Phương thức cấp chứng chỉ SSL (SSL Certificate Request Method): Nên chọn
ServBay CA
. ServBay sẽ tự động tạo và quản lý chứng chỉ SSL local được cấp bởi ServBay User CA. Sau khi cài đặt ServBay Public CA vào Keychain hệ thống, trình duyệt sẽ tin tưởng các chứng chỉ local này, hỗ trợ bạn phát triển và kiểm thử HTTPS dễ dàng tại local. Nếu có nhu cầu khác, bạn có thể chọnACME
(ví dụ để lấy Let’s Encrypt) hoặcCustom
(dùng chứng chỉ riêng). - Loại website (Website Type): 【Quan trọng】 Chọn
Reverse Proxy (Phản hồi chuyển tiếp)
. Nghĩa là ServBay sẽ làm cổng vào cho domain này và chuyển tiếp request đến địa chỉ dịch vụ backend mà bạn chỉ định. - Địa chỉ IP (IP Address): Nhập IP của dịch vụ Docker container trên máy Mac. Hầu hết trường hợp local, địa chỉ này nên là vòng lặp nội bộ
127.0.0.1
. - Cổng (Port): Nhập số cổng dịch vụ Docker container được map TRÊN MÁY MAC (host). Thông số này tương ứng cổng host trong lệnh
docker run -p <host-port>:<container-port>
. Ví dụ với-p 8080:80
, thì bạn điền8080
vào đây.
Hình minh họa: Điền thông tin cấu hình reverse proxy cho website Docker.
Bước 6: Hoàn thành và lưu cấu hình
Sau khi điền đầy đủ thông tin, nhấn nút Add (Thêm)
ở cuối form.
ServBay sẽ tự động xử lý, thêm cấu hình reverse proxy tương ứng vào web server (thường là Caddy hoặc Nginx), đồng thời cập nhật file hosts để trỏ domain bạn đã chọn về local.
Khi lưu thành công, ServBay sẽ áp dụng cấu hình trong thời gian ngắn và bạn có thể thử truy cập domain vừa tạo.
Bước 7: Truy cập website và sử dụng các tùy chọn nhanh
Sau khi cấu hình được lưu thành công, quay lại trang quản lý website, bạn sẽ thấy dòng entry cho website vừa tạo. Đảm bảo trạng thái entry là “Running” (Đang chạy).
Bây giờ bạn có thể mở domain đã khai báo trên trình duyệt (ví dụ http://docker.servbay.demo
hoặc https://docker.servbay.demo
). Nếu mọi thứ đúng, ServBay sẽ chuyển tiếp request về Docker container và hiển thị nội dung web của container trên trình duyệt.
Tại dòng entry, ServBay cung cấp một số nút thao tác nhanh tiện lợi như:
- Mở thư mục gốc bằng IDE: (Đối với loại website reverse proxy, nút này có thể không dùng được hoặc sẽ trỏ tới thư mục cấu hình của ServBay, chi tiết tuỳ vào phiên bản và cấu hình ServBay)
- Mở website trên trình duyệt: Nhanh chóng truy cập website vừa tạo trên tab mới.
- Xem log website: Xem access log và error log, rất hữu ích trong quá trình gỡ lỗi.
- Tạm dừng/kích hoạt website: Tạm thời vô hiệu hóa hoặc bật lại cấu hình reverse proxy cho website.
- Xóa website: Gỡ toàn bộ cấu hình website khỏi ServBay.
Hình minh họa: Các nút thao tác nhanh trong trang danh sách website của ServBay.
Lưu ý và khuyến nghị
- Trạng thái Docker container: Đảm bảo container Docker đích luôn trong trạng thái đang chạy, nếu không ServBay không thể chuyển tiếp request thành công.
- Cấu hình port mapping: Kiểm tra kỹ cấu hình port mapping của Docker (
-p
) và cổng khai báo trên ServBay cần đồng nhất. Ngoài ra, đảm bảo cổng này trên máy Mac không bị phần mềm khác chiếm. - Firewall: Kiểm tra tường lửa macOS, đảm bảo các cổng mà ServBay dùng (mặc định: 80, 443) và các cổng đã expose từ Docker container không bị block.
- Chế độ mạng Docker: Đa số dùng network mode mặc định
bridge
và map port qua tham số-p
là đơn giản nhất. Nếu bạn chọn chế độhost
, ServBay có thể truy cập trực tiếp vào cổng dịch vụ bên trong container (ví dụ container lắng nghe cổng 80 thì điền 80), nhưng cần chú ý tránh trùng cổng. - ServBay CA: Để phát triển HTTPS local thuận tiện, nên cài đặt ServBay Public CA vào Keychain. Điều này giúp trình duyệt tin tưởng chứng chỉ local mà ServBay tạo, tránh cảnh báo bảo mật khi truy cập web local.
Câu hỏi thường gặp & Xử lý sự cố (FAQ)
Q: Thêm website xong không truy cập được, trình duyệt báo lỗi kết nối hoặc timeout?
A: Vui lòng kiểm tra theo các bước sau:
- Kiểm tra trạng thái website trên ServBay: Tại trang quản lý website, đảm bảo website đang ở trạng thái “Running”.
- Kiểm tra trạng thái Docker container: Chạy lệnh
docker ps
để xác nhận container mục tiêu vẫn đang hoạt động. - Kiểm tra port mapping của Docker: Dùng
docker ps
, xem thông tin port tại cộtPORTS
, xác nhận cổng host (ví dụ trong0.0.0.0:8080->80/tcp
hoặc127.0.0.1:8080->80/tcp
thì số8080
là cổng bạn cần khai báo trên ServBay). - Kiểm tra dịch vụ bên trong Docker: Đảm bảo web service bên trong container (Nginx, Apache, Node app...) thực sự lắng nghe đúng cổng và không gặp lỗi. Có thể xem log của container bằng lệnh
docker logs <container_id_or_name>
. - Kiểm tra log của ServBay: Tại danh sách website, bấm vào biểu tượng log để xem log truy cập và lỗi ServBay ghi nhận. Log thường sẽ cho bạn biết chi tiết lý do chuyển tiếp thất bại.
- Kiểm tra file hosts hệ thống: Dù ServBay đã tự động thao tác, bạn vẫn nên mở
/etc/hosts
rà lại domain đã trỏ về127.0.0.1
chưa. - Kiểm tra firewall: Đảm bảo firewall không chặn các port ServBay hoặc cổng Docker expose.
Q: Tôi có thể dùng ServBay để quản lý trực tiếp Docker container không?
A: ServBay chủ yếu quản lý những dịch vụ web local, cơ sở dữ liệu, môi trường lập trình và chuyển tiếp lưu lượng đến backend (bao gồm cả container Docker). ServBay chưa cung cấp tính năng quản lý toàn diện vòng đời Docker container (khởi động, dừng, build image…), bạn vẫn cần dùng Docker CLI hoặc Docker Desktop để thao tác container.
Q: ServBay CA là gì? Vì sao nên cài đặt nó?
A: ServBay CA (Certificate Authority) là cơ chế quản lý chứng chỉ do ServBay cung cấp, phục vụ cho phát triển HTTPS local. ServBay User CA chuyên cấp phát chứng chỉ SSL cho các website local, còn ServBay Public CA là root CA. Khi bạn cài ServBay Public CA vào Keychain/máy tính, hệ điều hành và trình duyệt sẽ tin tưởng các chứng chỉ do ServBay User CA cấp, giúp bạn truy cập website local với HTTPS mà không bị báo lỗi bảo mật. Điều này cực quan trọng khi bạn muốn mô phỏng môi trường sản xuất để develop/test với HTTPS tại local.
Tổng kết
Việc thêm một website chạy trong Docker container vào ServBay là một giải pháp linh hoạt và hiệu quả, tận dụng vai trò trung tâm của ServBay trong quản lý traffic, domain local, đồng thời khai thác tối đa sức mạnh container hoá từ Docker để chạy và phân tách môi trường ứng dụng. Chỉ với vài bước cấu hình reverse proxy đơn giản, bạn có thể tích hợp đa dạng các dự án Docker vào quy trình phát triển của ServBay. Hãy tuân thủ các bước và lưu ý trong bài viết này để cài đặt và vận hành thành công website local trên Docker container của bạn.