Triển khai ứng dụng Nodejs với Docker và cấu hình API Gateway sử dụng Konga

3 min read

1. Build & Run Docker Image

   Image là đơn vị cơ bản nhất và là điều kiện tiên quyết để ta có thể chạy được project trong Docker. Image đại diện cho một môi trường trong đó có setup đầy đủ các tool, thư viện để chạy project

1.1 Tạo Dockerfile

   Để tạo ra Image chúng ta sẽ viết cấu hình cho Image ở trong 1 file gọi là Dockerfile, trong đó sẽ chứa các cấu hình chi tiết về Image.

    Để tạo Dockerfile, chúng ta tạo một file mới với tên "Dockerfile", nằm ngay trong thư mục chứa project (cùng cấp với file package.json).


    Với nội dung như sau:
from node:22-alpine

user node

workdir /app

run mkdir -p /app

run chown -r node:node /app

copy . .

run npm install --production --force

cmd ["npm","start"]
   Thay "node:22-alpine" bằng phiên bản nodejs mà project sử dụng. Danh sách các phiên bản node tham khảo tại link: node - Official Image | Docker Hub.

1.2 Build Docker Image

    Để build Docker Image, ta sử dụng lệnh:
sudo docker build -t [image_name]:[image_version] .
    Thay [IMAGE_NAME] và [IMAGE_VERSION] bằng tên image và phiên bản image của bạn.

1.3 Chạy project từ Docker Image

    Để chạy project, ta cần tạo container từ Docker Image vừa build, sử dụng lệnh:
sudo docker run --name [container_name] -p [port_local]:[port_docker] -d [image_name]:[image_version]
    Trong đó, [CONTAINER_NAME] là tên ta đặt cho container. [PORT_LOCAL] là port dùng để chạy container trên máy chủ. [PORT_DOCKER] là port dùng để chạy project trên máy ảo Docker.

    Ta cũng có thể chạy nhiều container của cùng 1 image với nhiều [PORT_LOCAL] khác nhau (Để chạy nhiều chân).

    Để kiểm tra container đã được khởi tạo thành công hay chưa, ta sử dụng lệnh:
sudo docker ps

 2. Cấu hình API gateway sử dụng Konga

2.1 Tạo upstream

    Mở Konga dashboard trên trình duyệt. Tại thanh menu bên trái, chọn mục Upstreams.


    Click vào button Create Upstream để tạo upstream mới.

    Nhập tên của Upstream (domain api nếu có) vào mục name. Sau đó Submit Upstream.


2.2 Tạo target cho Upstream

    Tại Upstream vừa tạo, chọn mục Details, sau đó chọn mục Targets.

    Click vào Add target để tạo target ứng với Upstream.


    Ở ô Target, nhập địa chỉ IP và port tương ứng với port ta cấu hình cho Container ở trên. Ví dụ: 192.168.100.160:3052

    Với ô Weight, để giá trị mặc định hoặc nhập số từ 0-1000 tương ứng với giá trị đổ tải loadbalancer cho target nếu cần.

    Chúng ta cũng có thể tạo thêm nhiều target tương ứng với IP và port của các container khác (Trong trường hợp chạy nhiều chân). Kong sẽ tự đổ tải theo Weight ta nhập.

2.3 Tạo service

    Bước tiếp theo, ta cần tạo service ứng với Upstream đã tạo bên trên.

    Để tạo service, ta chọn mục Services trên thanh menu trái của Konga dashboard. Click nút Add new service.


    Nhập các thông tin liên quan đến service:
  • Name: Tên của service (Tùy chọn).
  • Description: Mô tả về service (Tùy chọn).
  • Protocol phương thức giao tiếp với Upstream (http hoặc https)
  • Host: Đặt giống với tên Upstream ta đã tạo bên trên.
    Tùy chỉnh các trường khác (nếu cần), sau đó ấn Submit service.

2.4 Tạo route cho service

    Click vào service vừa tạo. Chọn mục Routes.


    Click Add route.


    Nhập các thông tin liên quan đến Route:
  • Name: Tên route (Tùy chọn).
  • Method: Các method sử dụng trong ứng dụng Nodejs (GET, POST, PUT, PATCH, DELETE, ...)
  • Strip Path: Chỉnh về No.
    Tùy chỉnh các mục còn lại nếu cần và click Submit route.

    Vậy là chúng ta đã hoàn tất cấu hình service cho Konga. Chúc các bạn thành công.
Bận cà phê, bận chơi.

Bạn có thể thích những bài đăng này

Đăng nhận xét