Docker - Thiết lập Node.js: Hướng dẫn cho người mới bắt đầu

Xin chào các bạn nhà phát triển đầy tham vọng! Hôm nay, chúng ta sẽ bắt đầu một hành trình thú vị vào thế giới của Docker và Node.js. Là giáo viên máy tính gần gũi của bạn, tôi sẽ hướng dẫn bạn từng bước trong chuyến phiêu lưu này. Đừng lo lắng nếu bạn mới bắt đầu lập trình - chúng ta sẽ bắt đầu từ những điều cơ bản nhất và dần dần nâng cao. Vậy, hãy lấy một tách cà phê (hoặc trà, nếu bạn thích), và chúng ta cùng bắt đầu nhé!

Docker - Setting Node.js

Docker là gì?

Trước khi chúng ta đi vào chi tiết, hãy nói về Docker. Hãy tưởng tượng bạn đang chuyển đến một ngôi nhà mới. Thay vì đóng mọi thứ vào những hộp có hình dạng và kích thước khác nhau, bạn có thể đặt tất cả tài sản của mình vào những контейнер tiêu chuẩn phù hợp với bất kỳ xe tải hoặc tàu thủy nào. Đó chính là những gì Docker làm cho phần mềm!

Docker là một nền tảng cho phép bạn đóng gói ứng dụng và tất cả các phụ thuộc của nó vào một đơn vị tiêu chuẩn gọi là контейнер. Những контейнер này có thể chạy một cách nhất quán trên bất kỳ hệ thống nào, giúp dễ dàng hơn trong việc phát triển, vận chuyển và chạy các ứng dụng.

Tại sao sử dụng Docker với Node.js?

Hiện tại, bạn có thể đang tự hỏi, "Tại sao tôi nên phiền toái với Docker cho ứng dụng Node.js của mình?" Hãy để tôi kể cho bạn một câu chuyện nhỏ.

Ngày xửa ngày xưa, có một nhà phát triển tên là Sarah. Cô ấy đã xây dựng một ứng dụng Node.js tuyệt vời trên máy tính xách tay của mình. Nó hoạt động hoàn hảo! Nhưng khi cô ấy cố gắng chạy nó trên máy chủ của đội, nó đã bị crash. Vấn đề là gì? Các phiên bản khác nhau của Node.js và một số phụ thuộc bị thiếu. Sarah đã dành nhiều ngày để sửa nó.

Nếu Sarah đã sử dụng Docker, cô ấy có thể đã tránh được cơn đau đầu này. Docker đảm bảo rằng ứng dụng của bạn chạy trong cùng một môi trường ở mọi nơi - có thể là máy tính xách tay của bạn, máy tính để bàn của đồng nghiệp, hoặc một máy chủ trong đám mây.

Thiết lập Docker cho Node.js

Được rồi, hãy c rolled up our sleeves and get our hands dirty with some actual setup!

Bước 1: Cài đặt Docker

Đầu tiên, chúng ta cần cài đặt Docker trên máy tính của mình. Truy cập trang web Docker và tải xuống Docker Desktop cho hệ điều hành của bạn. Theo các hướng dẫn cài đặt, và bạn sẽ sẵn sàng để bắt đầu!

Bước 2: Tạo một ứng dụng Node.js

Hãy tạo một ứng dụng Node.js đơn giản để đóng gói. Tạo một thư mục mới cho dự án của bạn và di chuyển vào thư mục đó:

mkdir my-node-app
cd my-node-app

Bây giờ, hãy tạo một tệp package.json đơn giản:

npm init -y

Lệnh này tạo một tệp package.json cơ bản với các giá trị mặc định. Tiếp theo, hãy cài đặt Express, một khung công tác Node.js phổ biến:

npm install express

Bây giờ, tạo một tệp tên là app.js và thêm mã sau:

const express = require('express');
const app = express();
const port = 3000;

app.get('/', (req, res) => {
res.send('Hello, Docker!');
});

app.listen(port, () => {
console.log(`App listening at http://localhost:${port}`);
});

Ứng dụng đơn giản này tạo một máy chủ web trả về "Hello, Docker!" khi bạn truy cập URL gốc.

Bước 3: Tạo một Dockerfile

Bây giờ đến phần thú vị - tạo Dockerfile của chúng ta! Một Dockerfile giống như một công thức nấu ăn mà Docker sẽ sử dụng để xây dựng контейнер của chúng ta. Tạo một tệp tên là Dockerfile (không có phần mở rộng) trong thư mục dự án của bạn và thêm nội dung sau:

# Sử dụng một hình ảnh Node.js chính thức làm hình ảnh cha
FROM node:14

# Đặt thư mục làm việc trong контейнер
WORKDIR /usr/src/app

# Sao chép package.json và package-lock.json
COPY package*.json ./

# Cài đặt các phụ thuộc
RUN npm install

# Sao chép phần còn lại của mã ứng dụng
COPY . .

# Khai báo cổng 3000 để có thể truy cập từ bên ngoài контейнер
EXPOSE 3000

# Định nghĩa lệnh để chạy ứng dụng
CMD [ "node", "app.js" ]

Hãy phân tích này:

  • FROM node:14: Chỉ định hình ảnh cơ bản chúng ta sử dụng - trong trường hợp này, Node.js phiên bản 14.
  • WORKDIR /usr/src/app: Đặt thư mục làm việc trong контейнер.
  • COPY package*.json ./: Sao chép các tệp package.json vào контейнер.
  • RUN npm install: Cài đặt các phụ thuộc trong контейнер.
  • COPY . .: Sao chép phần còn lại của mã ứng dụng vào контейнер.
  • EXPOSE 3000: Khai báo cổng 3000 để có thể truy cập từ bên ngoài контейнер.
  • CMD [ "node", "app.js" ]: Định nghĩa lệnh để chạy ứng dụng.

Bước 4: Xây dựng và chạy контейнер Docker

Bây giờ chúng ta có Dockerfile, hãy xây dựng hình ảnh Docker của mình:

docker build -t my-node-app .

Lệnh này xây dựng một hình ảnh Docker và đánh dấu nó là my-node-app. Dấu . ở cuối cho biết Docker sẽ tìm kiếm Dockerfile trong thư mục hiện tại.

Khi quá trình xây dựng hoàn tất, chúng ta có thể chạy контейнер của mình:

docker run -p 3000:3000 my-node-app

Lệnh này chạy контейнер của chúng ta và ánh xạ cổng 3000 trong контейнер với cổng 3000 trên máy chủ của chúng ta.

Chúc mừng! Bạn bây giờ nên có thể truy cập http://localhost:3000 trong trình duyệt web của mình và thấy "Hello, Docker!"

Các lệnh Docker phổ biến

Dưới đây là bảng các lệnh Docker phổ biến mà bạn sẽ thấy hữu ích:

Lệnh Mô tả
docker build Xây dựng một hình ảnh Docker từ một Dockerfile
docker run Chạy một контейнер Docker
docker ps Liệt kê các контейнер đang chạy
docker stop Dừng một контейнер đang chạy
docker rm Xóa một контейнер
docker images Liệt kê các hình ảnh Docker
docker rmi Xóa một hình ảnh Docker
docker logs Xem日志 cho một контейнер

Kết luận

Và thế là bạn đã có nó, các bạn! Chúng ta đã thành công thiết lập một ứng dụng Node.js sử dụng Docker. Chúng ta đã học được Docker là gì, tại sao nó hữu ích và cách tạo và chạy một контейнер Docker cho một ứng dụng Node.js.

Nhớ rằng, như việc học bất kỳ kỹ năng mới nào, việc thành thạo Docker đòi hỏi sự luyện tập. Đừng nản lòng nếu mọi thứ không hoạt động hoàn hảo lần đầu tiên. Hãy tiếp tục thử nghiệm, và trước khi bạn biết, bạn sẽ trở thành một chuyên gia trong việc đóng gói ứng dụng!

Khi chúng ta kết thúc, tôi muốn chia sẻ một bí mật nhỏ với bạn. Khi tôi lần đầu tiên bắt đầu sử dụng Docker, tôi vô tình gõ docker run thay vì docker build và đã dành một giờ để tự hỏi tại sao thay đổi của tôi không hiển thị. Chúng ta đều mắc lỗi - đó là cách chúng ta học hỏi!

Tiếp tục lập mã, tiếp tục học hỏi, và quan trọng nhất, hãy vui vẻ với nó! Đến gặp lại lần sau, chúc may mắn khi đóng gói!

Credits: Image by storyset