fbpx Docker là gì? ứng dụng chạy flask vào trong docker Skip to main content
Docker

Docker là gì? ứng dụng chạy flask vào trong docker

 

1️⃣ Docker là gì?

Docker là một nền tảng cho phép đóng gói ứng dụng và toàn bộ môi trường chạy của nó (thư viện, dependencies, cấu hình, runtime…) thành container.

👉 Nhờ đó, ứng dụng:

  • Chạy giống nhau trên mọi máy

  • Không phụ thuộc hệ điều hành

  • Dễ deploy, scale, versioning


2️⃣ Vấn đề trước khi có Docker

Vấn đề Mô tả
“Chạy được trên máy tôi” Máy dev chạy OK nhưng server lỗi
Khác phiên bản Python 3.8 vs 3.11 gây lỗi
Cài thư viện thủ công Dễ xung đột
Môi trường phức tạp Khó triển khai

👉 Docker giải quyết tất cả.


3️⃣ Docker hoạt động như thế nào?

3 khái niệm cốt lõi

Thành phần Vai trò
Image Bản đóng gói bất biến (template)
Container Image đang chạy
Dockerfile File mô tả cách build image

4️⃣ Kiến trúc Docker (đơn giản)

Dockerfile → Image → Container

5️⃣ Docker so với Virtual Machine

Docker Virtual Machine
Nhẹ Nặng
Chạy nhanh Chậm
Dùng chung OS kernel Mỗi VM có OS riêng
Phù hợp microservices Phù hợp hệ thống lớn

🚀 DOCKER + FLASK (ÁP DỤNG THỰC TẾ)


6️⃣ Cấu trúc project Flask + Docker

flask-app/
│
├── app.py
├── requirements.txt
├── Dockerfile
└── docker-compose.yml

7️⃣ Ví dụ file Flask (app.py)

from flask import Flask, jsonify

app = Flask(__name__)

@app.route("/")
def home():
    return {"message": "Flask API is running"}

@app.route("/health")
def health():
    return {"status": "OK"}

if __name__ == "__main__":
    app.run(host="0.0.0.0", port=5000)

8️⃣ requirements.txt

flask

9️⃣ Dockerfile (CỰC QUAN TRỌNG)

FROM python:3.10-slim

WORKDIR /app

COPY requirements.txt .
RUN pip install --no-cache-dir -r requirements.txt

COPY . .

CMD ["python", "app.py"]

🔟 Build image Docker

docker build -t flask-api .

Kiểm tra:

docker images

1️⃣1️⃣ Chạy container

docker run -p 5000:5000 flask-api

Truy cập:

http://localhost:5000

🧱 DOCKER COMPOSE (QUẢN LÝ NHIỀU CONTAINER)

docker-compose.yml

version: "3.9"

services:
  api:
    build: .
    container_name: flask_api
    ports:
      - "5000:5000"
    restart: always

Chạy bằng docker-compose

docker compose up --build

Dừng:

docker compose down

📦 CÁC LỆNH DOCKER QUAN TRỌNG NHẤT

🔹 Kiểm tra

docker --version
docker info
docker ps
docker ps -a
docker images

🔹 Image

docker build -t myapp .
docker rmi myapp
docker pull python:3.10

🔹 Container

docker run -d -p 5000:5000 myapp
docker stop <container_id>
docker rm <container_id>
docker logs <container_id>

🔹 Docker Compose

docker compose up
docker compose up --build
docker compose down

🔹 Dọn dẹp Docker

docker system prune
docker image prune
docker container prune

🔹 Đẩy image lên Docker Hub

docker login
docker tag flask-api username/flask-api
docker push username/flask-api

12️⃣ Những lỗi thường gặp & cách sửa

ModuleNotFoundError: flask

➡️ Chưa cài flask trong container
✅ Fix: thêm vào requirements.txt


port already in use

➡️ Port 5000 đang bị chiếm
✅ Dùng port khác:

docker run -p 8000:5000 flask-api

No such image

➡️ Gõ sai tên image
👉 dùng:

docker images

13️⃣ Tóm tắt ngắn gọn

Thành phần Mục đích
Docker Đóng gói ứng dụng
Image Bản build
Container Ứng dụng đang chạy
Dockerfile Công thức tạo image
Docker Compose Quản lý nhiều container
Flask Web API framework

✅ KẾT LUẬN

Docker giúp bạn viết 1 lần – chạy mọi nơi
Flask giúp bạn tạo API nhanh – gọn – dễ mở rộng

 

About

Công ty thiết kế web app chuyên thiết kế web và các dịch vụ maketing digital, seo, google adword...