Home / Docker / Tìm hiểu về Docker – Xây dựng Nodejs server đơn giản với Docker (Phần 2)

Tìm hiểu về Docker – Xây dựng Nodejs server đơn giản với Docker (Phần 2)

Tiếp nối Phần 1 – giới thiệu về DockerPhần 2 mình sẽ hướng dẫn các bạn tạo, thiết lập một Dockerfile và setup môi trường Nodejs Server bằng Docker.

Vậy Dockerfile là gì ?

Đơn giản Dockerfile chỉ là file và file đó chẳng có gì ngoài text 😄.

Dockerfile là một file text không có đuôi. Chứa những tập lệnh nhằm cấu trúc nên một Docker Image. Từ những câu lệnh đó, Docker có thể đóng gói một Docker Image theo sự tùy biến của bạn. Việc gom những câu lệnh riêng rẽ lại thành một file giúp các bạn dễ quản lý cũng như kiểm soát theo một kịch bản đã được dựng sẵn.

Dockerfile

 

Sau đây là phần demo, mình đã dựng một folder với các file như sau:

folder-demo-nodejs-docker

 

  • .dockerignore: File này giúp chúng ta không copy các thư mục hay file không cần thiết vào trong Docker Image

.dockerignore

 

 

 

 

 

  • package.json: Là nơi khai báo các Dependencies, thông tin của và các câu lệnh script của app.

 

  • app.js:

  • Dockerfile:

Bước chuẩn bị đã xong h chúng ta sẽ build Dockerfile:

  1. Mở terminal lên và cd vào thư mục chứa Dockerfile
  2. Chạy lệnh sau:
    VD: docker build -t node-docker-image .

    Sau khi build xong bạn sẽ thấy 2 Image,  Image gốc bạn kế thừa và Image của bạn

docker images

3.  Các bạn chạy tiếp câu lệnh sau đây để run Container:

  • -d: đưa Container vào chế độ chạy ngầm (Background)
  • -e: Khai báo các biến môi trường vào trong Container. Ở dòng lệnh trên mình khai báo biến môi trường là PORT=3001
  • -v: Cho phép ánh xạ (Mount) thư mục trên Local và thư mục trong Container  có cấu trúc <folder_local>:<folder_container> phân cách nhau bằng dấu : . Với cú pháp này, mỗi một sự thay đổi trên Local thì trong Container cũng sẽ thay đổi tương ứng. $(pwd) là câu lệnh giúp chúng ta lấy được đường dẫn của folder đang hiện hành trên terminal.
  •      *Lưu ý: hãy chắc chắn rằng folder trên local và trên container đang được đồng bộ nếu không sẽ xảy ra lỗi. Hiện tại trong folder của mình chưa có node_modules nên mình phải chạy lệnh yarn install  trước rồi mới chạy lệnh docker run.
  • -p: Liên kết port trong Container với port trên Local với cú pháp <port_local>:<port_container>
  • –name: Đặt tên cho Container. Nếu không Container sẽ được đặt tên ngẫu nhiên tự động.
  • Phần cuối cùng của câu lệnh là tên Image bạn muốn run.

Sau khi chạy xong các bạn có thể kiểm tra bằng câu lệnh docker ps

Kiểm tra quá trình run Container với câu lệnh sau:

  • -f: Theo dõi liên tục output Container
  • -t: Đánh dấu mốc thời gian của mỗi thay đổi.
    VD: docker logs node-docker-container -f -t

Kết quả: docker logs

hello world

Tiếp theo đây mình sẽ thay đổi một chút code trên Local xem điều gì sẽ xảy ra:

 

Code trên Container cũng ngay lập tức thay đổi theo và sinh ra log mới 😄

Tổng kết: Trong bài viết này mình đã đề cập đến khái niệm Dockerfile, tạo project Nodejs và build với Dockerfile, Nâng cao và mở rộng hơn với docker run – docker logs.

Bài viết kế tiếp mình sẽ hướng dẫn các bạn setup Nodejs – MongoDB với Docker Compose.

Cảm ơn các bạn đã theo dõi bài viết. Chúc các bạn có thể áp dụng được những kiến thức từ bài viết này vào trong các sản phẩm thực tế. Nếu có đóng góp nào mong các bạn hãy comment bên dưới bài viết để mình có thêm động lực ra thêm những bài viết chất lượng hơn 😄.

About Chung Chích Choè

I am Developer

Leave a Reply

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