Thêm và cấu hình website dựa trên Docker container trong ServBay
ServBay là môi trường phát triển web nội bộ hỗ trợ macOS và Windows, đa năng cho nhiều ngôn ngữ và công nghệ. Ngoài việc chạy trực tiếp các gói phần mềm tích hợp sẵn (như PHP, Node.js, Python, Go, Java, cơ sở dữ liệu...), bạn còn có thể sử dụng Docker để vận hành và quản lý website hoặc dịch vụ của mình. Phương thức này cực kỳ linh hoạt, đảm bảo môi trường cách ly và nhất quán — đặc biệt hữu ích với các dự án cần môi trường hoặc dependency riêng biệt.
Bài viết này sẽ hướng dẫn chi tiết cách thêm một website chạy trên Docker container vào ServBay, tích hợp liền mạch vào quá trình phát triển nội bộ của bạn nhờ vào reverse proxy mạnh mẽ của ServBay.
Tổng quan
Bằng cách thiết lập ServBay làm reverse proxy, bạn có thể dễ dàng chuyển hướng các yêu cầu tên miền tới cổng dịch vụ bên trong Docker container. ServBay sẽ xử lý luồng truy cập vào (như chứng chỉ HTTPS, phân tích tên miền...), còn Docker container thì tập trung vận hành ứng dụng. Mô hình này kết hợp sự thuận tiện của giao diện ServBay với sức mạnh container hóa của Docker.
Các bước sau sẽ hướng dẫn bạn quy trình từ A-Z để thêm và cấu hình một website chạy trên Docker trong ServBay.
Điều kiện tiên quyết
Trước khi bắt đầu, đảm bảo bạn đã có:
- ServBay đã cài đặt và hoạt động: Bạn đã cài đặt, khởi động ServBay thành công trên macOS.
- Docker đã cài đặt và hoạt động: Đã cài Docker Desktop (hoặc môi trường Docker khác) trên macOS và đảm bảo dịch vụ Docker đang chạy.
- Đã chuẩn bị Docker image và container: Đã xây dựng hoặc tải về image chứa website hoặc ứng dụng, và có thể chạy image đó để khởi tạo một container.
Các bước chi tiết để thêm website
Bước 1: Chuẩn bị và khởi động Docker container
Đầu tiên, hãy đảm bảo Docker container của bạn đang chạy, và dịch vụ bên trong (ví dụ: máy chủ web) đang lắng nghe trên một cổng đã được ánh xạ ra máy chủ (macOS) thông qua chức năng port mapping của Docker.
Ví dụ, nếu bạn có một container Nginx đơn giản, Nginx bên trong lắng nghe cổng 80, bạn có thể dùng lệnh sau để ánh xạ cổng 8080 của máy chủ ra cổng 80 của container:
bash
docker run -d --name my-nginx-servbay -p 8080:80 nginx
1
Trong ví dụ này, Nginx trong container my-nginx-servbay
lắng nghe cổng 80
, nhưng nhờ tham số -p 8080:80
, nó đã được ánh xạ ra cổng 8080
của máy chủ. ServBay sẽ kết nối tới cổng 8080
này trên máy chủ.
Tùy theo dự án và cấu hình Dockerfile, hãy chắc rằng dịch vụ bên trong container đang lắng nghe đúng cổng và cổng đó đã được ánh xạ ra máy chủ.
Bước 2: Mở giao diện quản lý ServBay
Tìm biểu tượng ứng dụng ServBay
trong thư mục ứng dụng của macOS, nhấp đúp để mở giao diện quản lý 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. Trong menu điều hướng bên trái, chọn Website
. Đây là nơi bạn xem, quản lý và cấu hình toàn bộ các website nội bộ đã thêm vào ServBay.
Minh họa: Nhấn “Website” trong thanh điều hướng bên trái để vào trang quản lý.
Bước 4: Thêm website mới
Ở cuối trang quản lý website, bạn sẽ thấy nút +
. Nhấn vào nút này, ServBay sẽ hiện phía bên phải một biểu mẫu mới để nhập thông tin cấu hình website.
Minh họa: Nhấn nút “+” cuối trang để bắt đầu thêm website mới.
Bước 5: Cấu hình website
Ở biểu mẫu cấu hình, 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, ví dụ
Docker Nginx Demo
. Tên này chỉ để quản lý nội bộ trên ServBay. - Tên miền (Domain): Nhập tên miền nội bộ bạn muốn dùng để truy cập website (nên dùng đuôi
.servbay.demo
để tránh xung đột với tên miền thật, ví dụdocker.servbay.demo
). ServBay sẽ tự động bổ sung bản ghi vào file hosts, trỏ tên miền này về địa chỉ nội bộ (127.0.0.1
). - Giao thức (Protocol): Lựa chọn giao thức website. Thường để mặc định là
HTTP/HTTPS
. ServBay sẽ lắng nghe cả cổng HTTP (80) và HTTPS (443), xử lý SSL tùy vào cài đặt. - Cách tạo chứng chỉ SSL (SSL Certificate Request Method): Nên chọn
ServBay CA
. ServBay sẽ tự động tạo, quản lý chứng chỉ SSL được ký bởi CA nội bộ. Sau khi cài ServBay Public CA vào Keychain hệ thống, bạn sẽ thấy trình duyệt tin tưởng các chứng chỉ này, cực tiện cho phát triển và kiểm thử HTTPS. Nếu có nhu cầu đặc biệt, có thể chọnACME
(ví dụ dùng Let's Encrypt) hoặcCustom
(tự 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)
. ServBay sẽ làm điểm vào cho tên miền này, chuyển hướng traffic sang địa chỉ dịch vụ backend bạn chỉ định. - Địa chỉ IP (IP Address): Nhập địa chỉ IP máy chủ nơi Dịch vụ Docker container đang lắng nghe. Đa phần nội bộ sẽ là địa chỉ vòng lặp
127.0.0.1
. - Cổng (Port): Nhập số cổng dịch vụ Docker đang được ánh xạ ra máy chủ. Cổng này chính là
<host-port>
trong lệnhdocker run -p <host-port>:<container-port>
. Ví dụ đã dùng-p 8080:80
, thì nhập8080
vào đây.
Minh họa: Nhập thông tin cấu hình reverse proxy cho website Docker.
Bước 6: Lưu và hoàn tất cấu hình
Sau khi điền đầy đủ thông tin, nhấn nút Thêm (Add)
cuối form.
ServBay sẽ xử lý yêu cầu, tự động thêm rule reverse proxy vào cấu hình máy chủ web (Caddy hoặc Nginx), đồng thời cập nhật file hosts hệ thống với tên miền bạn vừa tạo.
Khi lưu thành công, ServBay có thể mất vài giây cập nhật. Giờ đây, bạn có thể thử truy cập tên miền đã cấu hình.
Bước 7: Truy cập website và dùng các nút thao tác nhanh
Sau khi lưu, quay lại trang quản lý website, bạn sẽ thấy website mới vừa tạo. Đảm bảo trạng thái website là “Đang chạy”.
Bây giờ, hãy truy cập tên miền (ví dụ http://docker.servbay.demo
hoặc https://docker.servbay.demo
) bằng trình duyệt. Nếu mọi thứ đã cấu hình đúng, ServBay sẽ chuyển tiếp yêu cầu sang dịch vụ Docker, và bạn sẽ thấy nội dung chạy trong container xuất hiện trên trình duyệt.
Mỗi website trong danh sách đều có các nút thao tác tiện lợi, bao gồm:
- Mở thư mục gốc website bằng IDE: (Với website loại reverse proxy, nút này có thể không áp dụng hoặc sẽ dẫn tới thư mục cấu hình ServBay, phụ thuộc vào phiên bản và cấu hình hệ thống)
- Mở website trên trình duyệt: Lập tức mở URL website ở tab trình duyệt mới.
- Xem nhật ký website: Xem log truy cập và log lỗi mà ServBay ghi lại cho website — rất hữu ích cho việc debug.
- Tạm dừng/kích hoạt website: Vô hiệu hoặc khôi phục cấu hình reverse proxy của ServBay cho website đó tạm thời.
- Xóa website: Xóa cấu hình website khỏi ServBay.
Minh họa: Các nút thao tác nhanh cho website trong ServBay.
Lưu ý & Thực hành tốt
- Trạng thái Docker container: Đảm bảo container mục tiêu luôn hoạt động, nếu không ServBay không thể chuyển tiếp truy cập.
- Port mapping: Kiểm tra kỹ cấu hình port của Docker (
-p
), port nhập vào ServBay phải đúng, và không bị phần mềm khác chiếm dụng trên máy chủ. - Tường lửa: Kiểm tra cài đặt tường lửa trên macOS, đảm bảo các cổng mà ServBay (80, 443) và Docker (cổng ánh xạ ra host) dùng không bị block.
- Chế độ mạng Docker: Thường dùng chế độ mặc định
bridge
kèm port mapping là tiện nhất. Nếu dùng chế độ mạnghost
, ServBay truy cập trực tiếp cổng bên trong container (ví dụ lắng nghe port 80 thì nhập đúng con số đó vào ServBay), nhưng có thể phát sinh xung đột port. - ServBay CA: Để phát triển HTTPS thuận lợi, rất nên cài ServBay Public CA vào hệ thống để các chứng chỉ SSL nội bộ được trình duyệt tin tưởng.
Câu hỏi thường gặp & Xử lý sự cố (FAQ)
Q: Thêm website xong mà không truy cập được, trình duyệt báo lỗi hoặc timeout?
A: Hãy kiểm tra các bước:
- Kiểm tra trạng thái website trên ServBay: Website phải hiển thị “Đang chạy”.
- Kiểm tra trạng thái Docker container: Dùng
docker ps
trong terminal, xác nhận container mục tiêu đang hoạt động. - Kiểm tra port mapping của Docker: Lệnh
docker ps
sẽ hiện thông tin port mapping (PORTS
). Đảm bảo port trên máy chủ (ví dụ0.0.0.0:8080->80/tcp
hay127.0.0.1:8080->80/tcp
— lấy số8080
) khớp với cổng cấu hình trong ServBay. - Kiểm tra dịch vụ bên trong container: Đảm bảo dịch vụ web trong container (Nginx, Apache, Node...) đang lắng nghe đúng port và không gặp lỗi nội bộ. Có thể kiểm tra bằng lệnh
docker logs <ID hoặc tên container>
. - Kiểm tra log của ServBay: Nhấn biểu tượng log ở danh sách website trên ServBay, kiểm tra log truy cập/lỗi để biết nguyên nhân chuyển tiếp thất bại.
- Kiểm tra file hosts hệ thống: Dù ServBay tự động cập nhật, bạn vẫn nên kiểm thử
/etc/hosts
để xác nhận tên miền đã trỏ về127.0.0.1
. - Kiểm tra tường lửa: Đảm bảo các port ServBay và Docker cần không bị firewall block.
Q: ServBay quản lý Docker container được không?
A: ServBay chủ yếu quản lý dịch vụ web nội bộ, dữ liệu, môi trường ngôn ngữ và router traffic tới backend (kể cả dịch vụ chạy bằng Docker). ServBay KHÔNG quản trị toàn bộ vòng đời Docker container (khởi động/dừng/xây dựng image...). Để quản lý container, bạn cần dùng Docker CLI hoặc Docker Desktop.
Q: ServBay CA là gì? Tại sao cần cài?
A: ServBay CA (Certificate Authority) là bộ quản lý chứng chỉ do ServBay cung cấp nhằm thuận tiện cho phát triển HTTPS nội bộ. ServBay User CA được dùng để ký chứng chỉ SSL cho các website nội bộ, còn ServBay Public CA là CA gốc của hệ thống này. Việc cài ServBay Public CA vào Keychain giúp hệ thống và trình duyệt tin tưởng mọi chứng chỉ do ServBay User CA cấp phát, tránh cảnh báo khi truy cập website HTTPS nội bộ. Điều này rất quan trọng khi cần mô phỏng sản xuất để kiểm thử HTTPS trong quá trình phát triển.
Tóm tắt
Thêm website chạy bằng Docker container vào ServBay là giải pháp vừa hiệu quả vừa linh hoạt: dùng ServBay làm cốt lõi phát triển để quản lý traffic và tên miền, đồng thời tận dụng Docker cho môi trường vận hành và phân cách ứng dụng. Chỉ cần cấu hình reverse proxy đơn giản, bạn có thể tích hợp mọi dự án Docker vào quy trình phát triển với ServBay. Hãy tuân thủ các bước, lưu ý và thực hành tốt như trên để thiết lập và vận hành website nội bộ của mình một cách suôn sẻ.