0
0
Lập trình
Admin Team
Admin Teamtechmely

Hướng dẫn sử dụng Jopi Rewrite với Docker đơn giản!

Đăng vào 3 tuần trước

• 5 phút đọc

Chủ đề:

#docker#node#bunjs

Giới thiệu về Docker

Docker là một hệ thống môi trường ảo nhẹ (containers / VMs) cho phép tạo ra sự tách biệt an toàn giữa các tài nguyên. Docker mang lại nhiều lợi ích hữu ích:

  • Tách biệt tài nguyên: giúp cải thiện bảo mật cho ứng dụng.
  • Triển khai dễ dàng: ứng dụng có thể chạy mà không cần lo lắng nhiều về đặc điểm của hệ điều hành máy chủ (chỉ cần là Linux).
  • Tính di động cao: các môi trường ảo có độ liên kết thấp với hệ thống máy chủ, giảm thiểu phân mảnh tài nguyên máy chủ.

Với những ưu điểm này, nhiều công ty đã chọn Docker làm công cụ chính để triển khai ứng dụng trong môi trường sản xuất, trong khi các nhà phát triển thường sử dụng Docker trong quá trình phát triển ứng dụng để dễ dàng cài đặt các thành phần như MySQL và đảm bảo mọi thành viên trong nhóm làm việc trên một môi trường giống nhau — môi trường sẽ được sử dụng trong sản xuất.

Jopi Rewrite là gì?

Jopi Rewrite là một framework server cho Node.js và Bun.js, bao gồm nhiều tính năng hữu ích đã được cấu hình sẵn, tập trung vào sự dễ sử dụng thông qua API "dựa trên ý định" cho phép hiển thị các tùy chọn phù hợp với ngữ cảnh hiện tại.

Một số tính năng của Jopi Rewrite:

  • Hỗ trợ React.js phía server với tính năng tự động tái tạo (hydration) trong trình duyệt (giống như Next.js).
  • Nhập CSS và hình ảnh phía server (tương thích với Vite.js).
  • Tự động làm mới trình duyệt trong quá trình phát triển để đơn giản hóa việc kiểm tra UI/thiết kế.
  • Hỗ trợ Tailwind CSS có sẵn — không cần cấu hình.
  • Hệ thống middleware tương tự như Express.js.
  • Bảo vệ chống lại các cuộc tấn công DDoS như brute force và Slowloris.
  • Hỗ trợ JWT (JSON Web Token) cho xác thực.
  • Hỗ trợ chứng chỉ Let's Encrypt với khả năng gia hạn tự động (không cần khởi động lại).
  • Tính năng caching trang đơn giản nhưng mạnh mẽ.
  • Khả năng cân bằng tải tích hợp.
  • Công cụ crawler tích hợp có thể biến trang web thành trang tĩnh chỉ với một dòng mã.

Jopi Rewrite và Docker

Để giúp khởi tạo dự án với Jopi Rewrite dễ dàng hơn, công cụ jopi có thể cài đặt một mẫu dự án — có thể là một mẫu tối giản hoặc một mẫu đã bao gồm một tập hợp các tính năng (màn hình đăng nhập, quản lý người dùng, vai trò và quyền hạn, v.v.).

Trong số các mẫu đó, chúng tôi sẽ tập trung vào hai mẫu dự án Docker. Một mẫu tạo dự án Docker sử dụng Node.js và mẫu còn lại sử dụng Bun.js — lựa chọn được khuyến nghị cho môi trường sản xuất vì tốc độ ấn tượng của nó! (Jopi Rewrite được tối ưu hóa cho Bun.js vì runtime này cung cấp một số cơ chế rất thú vị).

Tạo một dự án với Docker

Chúng ta sẽ tạo một máy Docker để lưu trữ một ứng dụng Jopi Rewrite. Điều kiện tiên quyết là bạn đã cài đặt Node.js và phiên bản mới nhất của Docker.

Nếu bạn đã có, hãy chạy các lệnh sau trong terminal:

Copy
 npx jopi create docker-bunjs --dir ./dockerBun
 cd ./dockerBun
 docker compose up

Sau vài giây (lần khởi động đầu tiên sẽ lâu hơn vì Docker tải tất cả những gì cần thiết), hãy mở
http://127.0.0.1:3000 để xác nhận mọi thứ hoạt động.

Cấu trúc dự án

Công cụ jopi (được gọi ở đây với trình khởi động của Node npx) đã tạo ra các tệp sau cho chúng ta. Những tệp quan trọng nhất mà bạn cần biết là:

Copy
|- docker-compose.yml       <- kịch bản Docker
|- app/                     <- chứa ứng dụng của chúng ta
|- package.json            <- dự án Node.js / Bun.js
|- start.sh                <- tệp được thực thi khi máy ảo Docker khởi động

Tệp docker-compose.yml chứa các quy tắc cho Docker Compose, một công cụ cho phép bạn chạy một máy ảo trong khi chỉ định các tùy chọn và lắp ráp nhiều máy thành một mạng ảo. Trong tệp đó, chúng ta định nghĩa các quy tắc quan trọng như:

  • Hình ảnh cơ sở nào được sử dụng cho VM tùy chỉnh của chúng ta.
  • Gắn thư mục app dưới dạng thư mục chia sẻ trong VM.
  • Ánh xạ cổng 443 (HTTPS) của VM tới cổng 443 của máy chủ, vì vậy lưu lượng trên cổng 443 được chia sẻ.
  • Tương tự cho các cổng 80 (HTTP) và 3000.

Tệp start.sh có vai trò khởi động ứng dụng của chúng ta. Nội dung của nó như sau:

Copy
bun install
bun run start

Kích hoạt chế độ phát triển

Nếu bạn chỉnh sửa ứng dụng bây giờ, bạn có thể nhận thấy không có thay đổi nào được phản ánh trong trình duyệt: phiên bản cũ vẫn đang chạy. Để thấy những thay đổi được áp dụng, bạn phải khởi động lại VM.

Để tránh điều đó, bạn có thể kích hoạt chế độ phát triển, theo dõi các thay đổi nguồn và tự động khởi động lại runtime JavaScript để cập nhật được áp dụng ngay lập tức.

Để kích hoạt chế độ này, hãy chỉnh sửa tệp start.sh và sau đó khởi động lại VM để thay đổi được áp dụng.

Nội dung mới cho start.sh:

Copy
bun install
bun run start-dev

Kết thúc hướng dẫn

Đó là kết thúc hướng dẫn ngắn này, nhằm giúp bạn có cái nhìn tổng quan về cách sử dụng Docker với Jopi Rewrite.

Các liên kết hữu ích:

Thực hành tốt nhất:

  • Luôn kiểm tra các phiên bản mới nhất của Jopi Rewrite và Docker để đảm bảo bạn đang sử dụng các tính năng mới nhất và bảo mật nhất.
  • Đảm bảo cấu hình môi trường phát triển của bạn giống như môi trường sản xuất để tránh xung đột.

Những cạm bẫy thường gặp:

  • Không kiểm tra các tệp cấu hình Docker trước khi triển khai, có thể dẫn đến lỗi không mong muốn.
  • Quên kích hoạt chế độ phát triển có thể khiến bạn tốn thời gian khi không thấy thay đổi trong ứng dụng.

Mẹo hiệu suất:

  • Sử dụng docker-compose để quản lý nhiều dịch vụ một cách dễ dàng.
  • Tối ưu hóa hình ảnh Docker của bạn để giảm thời gian khởi động.

Khắc phục sự cố:

  • Nếu bạn gặp lỗi khi khởi động, hãy kiểm tra lại các tệp cấu hình và đảm bảo rằng tất cả các dịch vụ cần thiết đều đang chạy.
  • Kiểm tra nhật ký của Docker để xem chi tiết lỗi và tìm kiếm giải pháp trên các diễn đàn hoặc trang hỗ trợ.
Gợi ý câu hỏi phỏng vấn
Không có dữ liệu

Không có dữ liệu

Bài viết được đề xuất
Bài viết cùng tác giả

Bình luận

Chưa có bình luận nào

Chưa có bình luận nào