Build Docker Image cho NodeJS application

Trong bài viết này, mình sẽ hướng dẫn các bạn các bước cơ bản để build một Docker Image cho NodeJS application các bạn nhé!

Mình sẽ lấy ứng dụng NodeJS trong bài viết này để làm ví dụ.

Vì ứng dụng này không sử dụng một NodeJS module bên ngoài, nhưng thực tế các ứng dụng NodeJS sẽ thường sử dụng module bên ngoài, nên mình sẽ viết thêm code sử dụng module Lodash, một utility module giúp chúng ta xử lý các nhu cầu phổ biến của ứng dụng NodeJS, để các bạn có cái nhìn tổng thể khi build Docker Image cho các ứng dụng thực tế.

Mình sẽ cài đặt module lodash như sau:

Kết quả:

Tiếp theo, mình sẽ sử dụng một phương thức của Lodash module để uppercase chữ “Hello World” lên, như sau:

Lúc này, nếu chạy ứng dụng lên, các bạn sẽ thấy kết quả như sau:

Bây giờ chúng ta sẽ build Docker Image cho ứng dụng này các bạn nhé!

Chúng ta sẽ sử dụng latest version của Docker Image của NodeJS với Alpine Linux trên Docker Hub tại địa chỉ https://hub.docker.com/_/node

Các bạn có thể sử dụng thư mục /home/node/app để làm nơi chứa source code của ứng dụng và chạy ứng dụng. Chúng ta có thể tạo mới thư mục này và gán permission cho user node (user mặc định được tạo cùng với Docker Image của NodeJS) sử dụng thư mục này như sau:

Bây giờ, chúng ta sẽ copy source code vào thư mục này:

Chúng ta cần chạy các câu lệnh trên với –chown=node:node để đảm bảo tất cả các tập tin của NodeJS application owner bởi user node.
Tiếp theo, chúng ta sẽ sử dụng user node để install NodeJS module như sau:

Bây giờ thì chúng ta sẽ expose port 8080 của ứng dụng và chạy nó lên:

Toàn bộ nội dung của tập tin Dockefile như sau:

Đến đây thì chúng ta đã hoàn thành xong tập tin Dockerfile. Các bạn có thể build một Docker Image từ tập tin Dockerfile này sử dụng câu lệnh, ví dụ của mình sau:

Kết quả:


Chạy Docker Image này với câu lệnh sau:

sau đó thì đi đến địa chỉ http://localhost:8080, các bạn sẽ thấy kết quả giống như trên.

Add Comment