🚀 Triển Khai Node.js Trên AWS EC2 Với Docker Trong DevOps
Giới thiệu
Trong Tuần 12 của hành trình DevOps của tôi, tôi đã tập trung vào Docker và thành công trong việc triển khai một ứng dụng Node.js trên AWS EC2. Bài viết này sẽ hướng dẫn chi tiết từng bước trong quá trình triển khai, bao gồm cách tạo Dockerfile, xây dựng hình ảnh Docker và chạy ứng dụng. Đồng thời, tôi cũng sẽ chia sẻ các mẹo, tránh cạm bẫy thường gặp và cách khắc phục sự cố.
Mục tiêu học tập
- Hiểu rõ cách sử dụng Docker trong DevOps.
- Triển khai ứng dụng Node.js trên AWS EC2.
- Tìm hiểu về cấu hình bảo mật và mạng trong AWS.
🔹 Những gì tôi đã làm
1. Viết Dockerfile
Tôi đã bắt đầu bằng cách tạo một Dockerfile với Node.js làm hình ảnh cơ sở:
dockerfile
FROM node:14
WORKDIR /app
COPY package*.json ./
RUN npm install
COPY . .
EXPOSE 3000
CMD ["node", "app.js"]
2. Cài đặt các phụ thuộc tự động
Sau khi viết xong Dockerfile, tôi đã cài đặt tất cả các phụ thuộc cần thiết bằng lệnh sau:
bash
docker build -t my-node-app .
3. Xây dựng hình ảnh Docker
Tôi đã xây dựng hình ảnh Docker cho ứng dụng của mình:
bash
docker build -t my-node-app .
4. Chạy container
Sau khi hoàn tất việc xây dựng, tôi đã chạy container với lệnh:
bash
docker run -p 3000:3000 my-node-app
5. Cấu hình nhóm bảo mật AWS EC2
Cuối cùng, tôi đã cấu hình các nhóm bảo mật của AWS EC2 để cho phép lưu lượng truy cập đến cổng 3000.
🔹 Tại sao lại chọn Docker?
- Loại bỏ thiết lập thủ công: Docker giúp giảm thiểu công sức và thời gian cần thiết để thiết lập môi trường phát triển.
- Tạo môi trường nhất quán: Mọi người trong nhóm đều có thể làm việc trong cùng một môi trường, tránh tình trạng "nó chạy trên máy của tôi".
- Tăng tốc độ triển khai: Docker cho phép triển khai nhanh hơn nhờ vào việc sử dụng hình ảnh đã được tối ưu hóa.
- Công cụ chính trong tự động hóa DevOps: Docker là nền tảng cốt lõi cho quy trình tự động hóa DevOps.
💡 Thực hành tốt nhất khi sử dụng Docker
- Sử dụng Multi-Stage Builds: Giúp giảm kích thước hình ảnh cuối cùng.
- Quản lý phiên bản hình ảnh: Sử dụng tag để dễ dàng quay lại phiên bản trước.
- Giữ Dockerfile đơn giản: Tránh các bước không cần thiết để dễ dàng bảo trì.
⚠️ Những cạm bẫy thường gặp
- Quá tải hình ảnh: Đảm bảo không thêm quá nhiều ứng dụng vào một hình ảnh Docker.
- Quên mở cổng: Kiểm tra kỹ các cổng đã được mở trong nhóm bảo mật EC2.
- Không theo dõi logs: Theo dõi các logs của container để phát hiện sớm các vấn đề.
🔍 Mẹo hiệu suất
- Sử dụng các hình ảnh nhẹ: Chọn các hình ảnh cơ sở nhẹ như Alpine để tiết kiệm dung lượng.
- Tối ưu hóa npm: Sử dụng
npm cithay vìnpm installtrong CI/CD.
🛠️ Khắc phục sự cố
- Container không khởi động: Kiểm tra logs bằng lệnh
docker logs <container_id>. - Lỗi cổng không mở: Xem lại cấu hình nhóm bảo mật trên AWS.
📂 Liên kết hữu ích
Câu hỏi thường gặp (FAQ)
1. Docker là gì?
Docker là một nền tảng giúp phát triển, triển khai và chạy ứng dụng trong các container.
2. Tại sao nên triển khai ứng dụng trên AWS EC2?
AWS EC2 cung cấp khả năng mở rộng linh hoạt và dịch vụ đáng tin cậy cho các ứng dụng.
3. Làm thế nào để cải thiện hiệu suất Docker?
Sử dụng hình ảnh nhẹ, tối ưu hóa Dockerfile, và theo dõi logs thường xuyên.
Kết luận
Triển khai ứng dụng Node.js trên AWS EC2 với Docker là một bước quan trọng trong hành trình DevOps. Hy vọng rằng bài viết này đã cung cấp cho bạn những kiến thức và kỹ năng cần thiết để thực hiện điều đó một cách hiệu quả. Nếu bạn có bất kỳ câu hỏi nào, hãy để lại ý kiến của bạn bên dưới!