Deploy theo cách đơn giản: Phần 4. Tập Tành Build Container Trong Docker

Chắc hẳn các bạn đã từng nghe về máy tính, internet và phần mềm, đúng không? Hôm nay, chúng ta sẽ học về một thứ rất thú vị gọi là DockerContainer. Bạn đừng lo, dù nghe có vẻ khó nhưng chúng ta sẽ cùng làm cho dễ hiểu!

Nhắc lại “Docker là gì?

Bạn có biết khi chúng ta muốn chơi một trò chơi trên máy tính, chúng ta cần cài đặt nó đúng không? Nhưng nếu chúng ta muốn chơi nhiều trò chơi khác nhau thì lại phải cài đặt mỗi trò riêng biệt, rất mất thời gian và không tiện lợi chút nào.

Docker là một công cụ giúp chúng ta “đóng gói” phần mềm vào trong một chiếc “hộp” gọi là container. Container này giống như một cái thùng chứa tất cả các thứ cần thiết để phần mềm chạy, giúp phần mềm này có thể chạy trên bất kỳ máy tính nào mà không gặp phải vấn đề gì!

Hiểu hơn về Container là gì

Hãy tưởng tượng bạn có một chiếc hộp đựng đồ chơi. Trong hộp này, bạn sẽ đặt tất cả các món đồ chơi mà bạn cần để chơi một trò chơi, như bàn cờ, quân cờ và sách hướng dẫn. Khi bạn muốn chơi, chỉ cần mang hộp đồ chơi này đến bất kỳ nơi nào và mở ra là có thể chơi ngay mà không cần phải tìm lại các món đồ chơi riêng biệt.

Container trong Docker cũng giống như vậy! Nó chứa tất cả các thứ cần thiết để chạy một ứng dụng, từ mã nguồn đến cài đặt, và bạn có thể mang nó đi bất kỳ đâu mà không phải lo lắng.

Tại sao chúng ta cần Docker và Container?

  • Tiết kiệm thời gian: Với Docker, bạn không cần phải cài đặt phần mềm lại từ đầu mỗi khi đổi máy tính. Chỉ cần mang container của bạn đi là xong!
  • Chạy mọi nơi: Dù bạn có dùng máy tính của mình hay mượn máy của bạn bè, container vẫn có thể chạy được mà không gặp lỗi.
  • Dễ dàng chia sẻ: Nếu bạn tạo ra một ứng dụng hay một trò chơi hay, bạn có thể đóng gói nó vào container và chia sẻ với bạn bè rất dễ dàng.

Cách Tạo Container trong Docker

Giờ chúng ta sẽ học cách làm một container đơn giản bằng Docker. Đừng lo, bạn chỉ cần làm theo các bước sau:

  1. Cài Docker: Đầu tiên, bạn cần cài Docker trên máy tính. Docker có thể tải về miễn phí từ trang web của họ.
  2. Tạo một Dockerfile: Dockerfile là một tệp hướng dẫn Docker biết phải làm gì. Bạn có thể tưởng tượng Dockerfile giống như một công thức nấu ăn. Ví dụ, một Dockerfile có thể nói: “Hãy lấy một cái container trống, rồi cài đặt ứng dụng A và ứng dụng B vào đó.”
  3. Xây Dựng Container: Sau khi tạo Dockerfile, bạn sẽ dùng một câu lệnh gọi là docker build để “nấu” ra một container từ công thức đó.
  4. Chạy Container: Khi đã có container, bạn chỉ cần dùng câu lệnh docker run để chạy nó, và ứng dụng của bạn sẽ hoạt động như một phép màu!

Thực hành

Để giúp các bạn hiểu rõ hơn, chúng ta sẽ tạo một ví dụ đơn giản về một ứng dụng Node.js, nó sẽ tạo ra một API Hello World. Sau đó, chúng ta sẽ đóng gói ứng dụng đó vào một Docker container. Dưới đây là các bước chi tiết!

Khuyến khích sử dụng VPS để thực hành giúp bạn có góc nhìn thực tế hơn!

Tạo một ứng dụng Node.js đơn giản

Trước tiên, bạn cần tạo một ứng dụng Node.js cơ bản. Giả sử bạn đã cài Node.js trên máy tính, nếu chưa, bạn có thể tải và cài đặt Node.js từ trang web Node.js.

Bước 1: Tạo một thư mục mới cho ứng dụng Node.js

Mở terminal hoặc command prompt, sau đó tạo một thư mục mới cho ứng dụng:

mkdir hello-world-api
cd hello-world-api
npm init -y
npm install express

Bước 2: Tạo file index.js

Tạo một file mới có tên index.js và viết mã sau:

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

// Tạo API hello world
app.get('/', (req, res) => {
  res.send('Hello World from Node.js API!');
});

// Lắng nghe tại cổng 3000
app.listen(port, () => {
  console.log(`App listening at http://localhost:${port}`);
});

Test ứng dụng Node.js

Trước khi đóng gói vào Docker, bạn cần kiểm tra xem ứng dụng có hoạt động tốt hay không.

  • Mở terminal và chạy lệnh:
node index.js
  • Mở trình duyệt và truy cập địa chỉ: http://localhost:3000

Nếu mọi thứ hoạt động tốt, bạn sẽ thấy dòng chữ “Hello World from Node.js API!” hiện ra trên trình duyệt.

Đóng gói ứng dụng Node.js vào Docker

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

Bây giờ, chúng ta sẽ tạo một file Dockerfile để đóng gói ứng dụng Node.js vào container. Tạo file Dockerfile trong cùng thư mục với index.js và thêm mã sau:

# Chọn image Node.js có sẵn
FROM node:14

# Tạo thư mục ứng dụng trong container
WORKDIR /app

# Copy package.json và package-lock.json vào container
COPY package*.json ./

# Cài đặt các dependencies
RUN npm install

# Copy toàn bộ mã nguồn vào container
COPY . .

# Mở cổng 3000
EXPOSE 3000

# Chạy ứng dụng
CMD ["node", "index.js"]

Bước 2: Build Docker Image

Quay lại terminal, trong thư mục chứa Dockerfile và mã nguồn của ứng dụng, chạy lệnh sau để xây dựng Docker image:

docker build -t hello-world-api .

Lệnh này sẽ tạo ra một image có tên là hello-world-api từ Dockerfile của bạn.

Bước 3: Chạy Docker Container

Sau khi Docker image được tạo thành công, bạn có thể chạy container bằng lệnh sau:

docker run -it -p 4000:3000 hello-world-api

Lệnh này sẽ khởi động container và ánh xạ cổng 4000 của máy tính với cổng 3000 trong container, để bạn có thể truy cập ứng dụng. Bạn có thể thay đổi cổng 4000 thành một giá trị khác.

Bây giờ, mở trình duyệt và truy cập vào địa chỉ http://localhost:4000 để thấy kết quả. Nếu bạn đang sử dụng VPS để thực hành thì truy cập vào địa chỉ http://<địa chỉ IP>:4000

Kết luận

Vậy là bạn đã tạo thành công một API Hello World trong Node.js và đóng gói nó vào trong Docker container! Giờ đây, bạn có thể chạy ứng dụng này trên bất kỳ máy tính nào có Docker mà không gặp bất kỳ vấn đề gì.

Docker giúp các lập trình viên dễ dàng tạo ra, chia sẻ và chạy ứng dụng mà không phải lo lắng về việc cài đặt môi trường hoặc phần mềm cần thiết. Bạn chỉ cần đóng gói ứng dụng của mình vào container và chạy nó ở bất kỳ đâu!

Hy vọng bạn đã hiểu rõ về cách Docker và container hoạt động. Hãy thử tạo thêm các ứng dụng khác và đóng gói chúng vào Docker để khám phá thêm!

Previous Article

Deploy theo cách đơn giản: Phần 3. Kiến thức chủ chốt về Docker

Next Article

Deploy theo cách đơn giản: Phần 5. Cấu Hình Tên Miền Trỏ Về Container Bằng Nginx

Write a Comment

Leave a Comment

Your email address will not be published. Required fields are marked *

Nhận thông báo mới

Để lại email để nhận thông báo về bài viết mới
Thông báo chất lượng, không spam ✨