Hướng dẫn Docker: Dockerizing ứng dụng Nodejs Express trên Ubuntu 18.04

theanh

Administrator
Nhân viên
Docker là một dự án mã nguồn mở cung cấp nền tảng mở cho các nhà phát triển và quản trị viên hệ thống để xây dựng, đóng gói và chạy các ứng dụng ở bất kỳ đâu dưới dạng một vùng chứa nhẹ. Docker tự động triển khai các ứng dụng bên trong các vùng chứa phần mềm.

Nodejs là một môi trường chạy JavaScript mã nguồn mở. Đây là môi trường chạy đa nền tảng, có thể cài đặt trên Linux, Windows, MacOS, FreeBSD, v.v. Nodejs rất hữu ích để xây dựng cả ứng dụng máy chủ và máy tính để bàn.

Trong hướng dẫn này, tôi sẽ chỉ cho bạn cách tạo một hình ảnh docker cho một dự án ứng dụng Nodejs Express hiện có trong Ubuntu 18.04. Chúng ta sẽ tìm hiểu về dockerizing một ứng dụng Nodejs, sau đó triển khai ứng dụng dưới dạng một container tới môi trường docker bằng cách sử dụng tập lệnh docker-compose.

Điều kiện tiên quyết​

  • Ubuntu 18.04
  • Quyền root

Những việc chúng ta sẽ làm​

  1. Cài đặt Docker CE
  2. Cài đặt Docker-Compose
  3. Thiết lập dự án Nodejs Express
  4. Xây dựng dự án
  5. Kiểm tra

Bước 1 - Cài đặt Docker CE​

Trong hướng dẫn này, chúng ta sẽ cài đặt docker-ce community edition từ kho lưu trữ docker. Chúng ta sẽ cài đặt docker-ce community edition và docker-compose hỗ trợ tệp compose phiên bản 3.

Trước khi cài đặt docker-ce, hãy cài đặt các phụ thuộc docker cần thiết bằng lệnh apt.
Mã:
sudo apt install -y \
 apt-transport-https \
 ca-certificates \
 curl \
 software-properties-common
Bây giờ hãy thêm khóa docker và kho lưu trữ bằng cách chạy các lệnh bên dưới.
Mã:
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -
sudo add-apt-repository \
 "deb [arch=amd64] https://download.docker.com/linux/ubuntu \
 $(lsb_release -cs) \
 stable"


Cài đặt gói docker-ce.
Mã:
sudo apt install docker-ce
Sau khi cài đặt hoàn tất, hãy khởi động dịch vụ docker và cho phép dịch vụ này khởi chạy mỗi khi khởi động hệ thống.
Mã:
systemctl start docker
systemctl enable docker


Tiếp theo, chúng tôi sẽ cấp cho người dùng thông thường các quyền để chạy và quản lý vùng chứa docker.

Thêm người dùng mới có tên 'mohammad' và thêm vào nhóm docker.
Mã:
useradd -m -s /bin/bash mohammad
usermod -a -G docker mohammad
Bây giờ hãy đăng nhập với tư cách là người dùng 'mohammad' và chạy docker container hello-world.
Mã:
su - mohammad
docker run hello-world
Và bạn sẽ nhận được kết quả như hiển thị bên dưới.


Bước 2 - Cài đặt Docker-Compose​

Trong bước này, chúng ta sẽ cài đặt docker-compose theo cách thủ công từ tệp nhị phân có thể tải xuống từ GitHub. Chúng tôi sẽ cài đặt phiên bản docker-compose mới nhất hỗ trợ compose v3.

Tải xuống phiên bản docker-compose 1.22.0 mới nhất bằng lệnh curl vào thư mục '/usr/local/bin', sau đó thực thi bằng lệnh chmod.

Chạy các lệnh bên dưới.
Mã:
sudo curl -L https://github.com/docker/compose/releases/download/1.22.0/docker-compose-$(uname -s)-$(uname -m) -o /usr/local/bin/docker-compose
sudo chmod +x /usr/local/bin/docker-compose
Và phiên bản docker-compose mới nhất đã được cài đặt, hãy kiểm tra bằng cách chạy lệnh docker-compose bên dưới.
Mã:
docker-compose version
Sau đây là kết quả.


Bước 3 - Thiết lập dự án Nodejs Express​

Trong phần này, chúng ta sẽ cấu hình môi trường ứng dụng Nodejs. Chúng ta sẽ sử dụng ứng dụng nodejs đơn giản có thể được tạo bằng 'express-generator'.

Đăng nhập vào người dùng 'mohammad'.
Mã:
su - mohammad
Tạo một thư mục mới có tên là 'project' và đi đến thư mục đó.
Mã:
mkdir -p project
cd project
Bây giờ hãy tạo một ứng dụng nodejs hello-word đơn giản bằng lệnh 'express' bên dưới.
Mã:
express hakase-app
Lưu ý:

Đảm bảo nodejs, npm và các gói 'express-generator' đã được cài đặt trên hệ thống.

Và bạn sẽ nhận được ứng dụng express nodejs đơn giản trên thư mục 'hakase-app'.



Tiếp theo, chúng ta sẽ xây dựng hình ảnh docker tùy chỉnh cho ứng dụng nodejs 'hakase-app'.

Trong thư mục 'project', tạo một 'Dockerfile' mới bằng vim.
Mã:
vim Dockerfile
Dán cấu hình hình ảnh docker sau vào đó.
Mã:
FROM node:8.11.4-alpineRUN mkdir -p /srcRUN npm install express-generator -gWORKDIR /srcADD hakase-app/package.json /src/package.jsonRUN npm installEXPOSE 3000CMD node hakase-app/bin/www
Lưu và thoát.



Chúng tôi đang tạo một hình ảnh docker tùy chỉnh mới cho ứng dụng nodejs của mình với các thông số kỹ thuật bên dưới.
  • Hình ảnh tùy chỉnh dựa trên phiên bản nodejs image 8.11.4 alpine chính thức.
  • Chúng tôi đang tạo một thư mục mới cho dự án '/src' của mình.
  • Cài đặt 'express-generator' vào hình ảnh tùy chỉnh.
  • Thêm tệp 'package.json' chứa hồ sơ ứng dụng và các gói cần thiết vào thư mục '/src'.
  • Cài đặt tất cả nodejs các gói cần thiết cho dự án, dựa trên tệp 'package.json'.
  • Xuất cổng 3000 bằng lệnh exec start mặc định 'node hakase-app/bin/www'.
Tiếp theo, chúng ta sẽ xây dựng hình ảnh tùy chỉnh dựa trên tập lệnh docker-compose.

Tạo tệp yml mới 'docker-compose.yml' bằng vim.
Mã:
vim docker-compose.yml
Dán cấu hình sau vào đó.
Mã:
version: '3'services: hakase-app: build: . volumes: - ./hakase-app:/src/hakase-app ports: - "3000:3000" restart: always
Lưu và thoát.



Chúng tôi đang tạo một dịch vụ docker mới có tên là 'hakase-app' và đồng thời chúng tôi đang xây dựng hình ảnh docker tùy chỉnh dựa trên 'Dockerfile' trên thư mục dự án và sẽ tự động gắn các tệp ứng dụng hakase-app.

Thiết lập Nodejs Express đã hoàn tất.

Bước 4 - Xây dựng và chạy dự án​

Đăng nhập với tư cách là người dùng 'mohammad' và đi tới thư mục 'project'
Mã:
su - mohammad
cd project/
Xây dựng hình ảnh và tạo dịch vụ docker hakase-app bằng lệnh docker-compose bên dưới.
Mã:
docker-compose build
Bây giờ bạn sẽ nhận được kết quả như hiển thị bên dưới.



Và khi hoàn tất, hãy chạy dịch vụ docker 'hakase-app'.
Mã:
docker-compose up -d
Sau đây là kết quả.



Hình ảnh docker tùy chỉnh cho ứng dụng Nodejs của chúng tôi đã được tạo và dịch vụ docker hakase-app đã hoạt động.

Bước 5 - Kiểm tra​

Hiển thị hình ảnh docker khả dụng trên máy chủ.
Mã:
hình ảnh docker-compose
hình ảnh docker


Một hình ảnh docker tùy chỉnh mới cho ứng dụng Nodejs của chúng tôi đã được tạo.

Hiển thị dịch vụ docker đang chạy.
Mã:
docker-compose ps
docker ps


Ứng dụng Nodejs đang hoạt động trên cổng máy chủ 3000.

Mở trình duyệt web và nhập địa chỉ IP của máy chủ cùng với cổng.

http://10.0.15.2:3000/

Và bạn sẽ nhận được trang express đơn giản.



Việc Dockerizing ứng dụng Nodejs Express trên Ubuntu 18.04 đã hoàn tất thành công.

Tham khảo​

 
Back
Bên trên