🚀 [Application Development Workflow] - Hiểu quy trình build & deploy app dạng container
Trong thế giới hiện đại, việc đóng gói ứng dụng bằng container như Docker đã trở thành chuẩn. Nếu bạn từng phải lo lắng về việc "máy anh chạy được, máy em thì không" thì container chính là lời giải. Cùng tìm hiểu quy trình phát triển ứng dụng với Docker theo 2 hướng phổ biến: Custom App Workflow và Docker Hub Workflow.
🛠 Docker Workflow - Custom App
Nếu bạn tự viết app từ đầu hoặc cần build lại image để phù hợp môi trường (VD: thiết bị mạng Cisco hỗ trợ container), bạn sẽ làm theo quy trình sau: 🔹 Bước 1: Tạo Dockerfile
Dockerfile là tập tin hướng dẫn cách dựng image. Ví dụ:
FROM ubuntu:18.04 as base RUN apt-get update -yq && apt-get install -yq python COPY poll-temperature.py /usr/bin/poll-temperature.py RUN chmod 777 /usr/bin/poll-temperature.py CMD /usr/bin/poll-temperature.py
Tập tin Python này (poll-temperature.py) đơn giản là script ghi lại nhiệt độ giả lập vào log file cứ mỗi 5 giây. Đây là App của bạn. 🔹 Bước 2: Build Docker Image
Chạy lệnh:
docker build -t myapp .
Docker sẽ đọc Dockerfile, đóng gói mọi thứ thành 1 image tên myapp. 🔹 Bước 3: Deploy App
Nếu bạn cần đưa image này lên thiết bị không có Docker Hub (VD: Switch Catalyst hỗ trợ Docker engine), bạn cần "export" image ra file .tar:
docker save myapp > myapp.tar
File này sẽ được copy vào thiết bị đích và load lên chạy container nội bộ.
📦 Bạn cũng có thể đính kèm mô tả ứng dụng bằng App Descriptor - định dạng JSON hoặc YAML tùy môi trường, giúp thiết bị biết cấu hình của container.
🐳 Docker Workflow - Docker Hub
Trường hợp bạn không build image mà kéo trực tiếp từ Docker Hub, quy trình càng đơn giản hơn: 🔹 Bước 1: Pull Docker Image
docker pull myapp
🔹 Bước 2: Deploy App
Sau khi pull xong, bạn cũng đóng gói ra file .tar để chuyển đi:
docker save myapp > myapp.tar
👉 Đây là cách các switch hiện đại như Cisco Catalyst 9300 chạy ứng dụng container ngay trên thiết bị như thể là một mini-server.
💡 Lưu ý thực chiến
Trong thế giới hiện đại, việc đóng gói ứng dụng bằng container như Docker đã trở thành chuẩn. Nếu bạn từng phải lo lắng về việc "máy anh chạy được, máy em thì không" thì container chính là lời giải. Cùng tìm hiểu quy trình phát triển ứng dụng với Docker theo 2 hướng phổ biến: Custom App Workflow và Docker Hub Workflow.
🛠 Docker Workflow - Custom App
Nếu bạn tự viết app từ đầu hoặc cần build lại image để phù hợp môi trường (VD: thiết bị mạng Cisco hỗ trợ container), bạn sẽ làm theo quy trình sau: 🔹 Bước 1: Tạo Dockerfile
Dockerfile là tập tin hướng dẫn cách dựng image. Ví dụ:
FROM ubuntu:18.04 as base RUN apt-get update -yq && apt-get install -yq python COPY poll-temperature.py /usr/bin/poll-temperature.py RUN chmod 777 /usr/bin/poll-temperature.py CMD /usr/bin/poll-temperature.py
Tập tin Python này (poll-temperature.py) đơn giản là script ghi lại nhiệt độ giả lập vào log file cứ mỗi 5 giây. Đây là App của bạn. 🔹 Bước 2: Build Docker Image
Chạy lệnh:
docker build -t myapp .
Docker sẽ đọc Dockerfile, đóng gói mọi thứ thành 1 image tên myapp. 🔹 Bước 3: Deploy App
Nếu bạn cần đưa image này lên thiết bị không có Docker Hub (VD: Switch Catalyst hỗ trợ Docker engine), bạn cần "export" image ra file .tar:
docker save myapp > myapp.tar
File này sẽ được copy vào thiết bị đích và load lên chạy container nội bộ.
📦 Bạn cũng có thể đính kèm mô tả ứng dụng bằng App Descriptor - định dạng JSON hoặc YAML tùy môi trường, giúp thiết bị biết cấu hình của container.
🐳 Docker Workflow - Docker Hub
Trường hợp bạn không build image mà kéo trực tiếp từ Docker Hub, quy trình càng đơn giản hơn: 🔹 Bước 1: Pull Docker Image
docker pull myapp
🔹 Bước 2: Deploy App
Sau khi pull xong, bạn cũng đóng gói ra file .tar để chuyển đi:
docker save myapp > myapp.tar
👉 Đây là cách các switch hiện đại như Cisco Catalyst 9300 chạy ứng dụng container ngay trên thiết bị như thể là một mini-server.
💡 Lưu ý thực chiến
- Switch phải có module docker hỗ trợ (VD: C9300 UADP ASIC + khả năng Docker Hosting)
- Kiểm tra xem docker runtime đã được kích hoạt chưa
- Một số nền tảng dùng App Hosting Framework riêng (khác với docker CE thông thường)