Tạo một Dockerfile cho ứng dụng Flask

By khoanc, at: 13:26 Ngày 08 tháng 6 năm 2023

Thời gian đọc ước tính: __READING_TIME__ minutes

Create a Dockerfile for Flask Application
Create a Dockerfile for Flask Application

Flask là một framework web nhẹ và mạnh mẽ cho Python được sử dụng rộng rãi để phát triển các ứng dụng web và API. Đây là lựa chọn tốt nhất cho các dự án nhỏ, trong khi Django phù hợp hơn với các dự án lớn hơn.

 

Docker giúp dễ dàng đóng gói ứng dụng Flask của bạn vào các container, đảm bảo tính nhất quán trong hoạt động trên các môi trường khác nhau.

Trong hướng dẫn này, chúng tôi sẽ hướng dẫn bạn cách tạo một Dockerfile tối giản cho ứng dụng Flask, lý tưởng cho người mới bắt đầu và những người tìm kiếm một cấu hình đơn giản.

 

Docker là gì và tại sao nên sử dụng nó với Flask?

 

Docker cho phép các nhà phát triển đóng gói ứng dụng và các phụ thuộc của chúng vào các container riêng biệt. Đối với ứng dụng Flask, Docker mang lại những lợi ích sau:

 

  • Khả năng di chuyển: Đảm bảo ứng dụng của bạn chạy giống nhau trong môi trường phát triển, staging và sản xuất.
     
  • Cách ly phụ thuộc: Tránh xung đột giữa các gói Python.
     
  • Dễ dàng chia sẻ: Chia sẻ một image Docker duy nhất với nhóm của bạn hoặc triển khai nó một cách liền mạch.

 

Điều kiện tiên quyết

 

Để làm theo hướng dẫn này, bạn cần:

 

  • Một ứng dụng Flask cơ bản.
     
  • Docker đã được cài đặt trên hệ thống của bạn (Tải xuống Docker tại đây).
     
  • Làm quen với các khái niệm cơ bản về Flask và Docker.

 

Tạo một Dockerfile tối giản cho ứng dụng Flask của bạn

 

Một Dockerfile là một tập hợp các hướng dẫn để xây dựng một image Docker. Dưới đây là hướng dẫn từng bước để tạo một file cho ứng dụng Flask đơn giản.

 

Chọn một Image cơ sở

 

Chúng ta sẽ sử dụng image Python Slim nhẹ làm cơ sở:

FROM python:3.10-slim


Image này bao gồm Python mà không có các phần thừa không cần thiết, giúp nó hiệu quả đối với nhu cầu của chúng ta.

 

Đặt thư mục làm việc

 

Chỉ định thư mục nơi mã ứng dụng của bạn sẽ nằm:

 

WORKDIR /app


Điều này sắp xếp hệ thống file của container và đảm bảo các lệnh tiếp theo chạy trong thư mục /app.

 

Cài đặt phụ thuộc

 

Sao chép file requirements.txt vào container và cài đặt các phụ thuộc:

 

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


Cờ --no-cache-dir ngăn chặn việc lưu trữ bộ nhớ cache file, giúp image nhẹ hơn.

 

Sao chép mã ứng dụng

 

Sao chép mã ứng dụng Flask của bạn vào container:

 

COPY . /app/


Điều này chuyển tất cả các file từ thư mục dự án cục bộ của bạn sang thư mục /app/ của container.

 

Công khai cổng

 

Công khai cổng 5000, đây là cổng máy chủ phát triển mặc định của Flask:

 

EXPOSE 5000


Điều này làm cho ứng dụng có thể truy cập được trên cổng 5000 khi container được chạy.

 

Đặt lệnh để chạy ứng dụng

 

Định nghĩa lệnh mặc định để khởi động ứng dụng Flask của bạn:

 

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


Thay thế app.py bằng tên file chính của ứng dụng Flask của bạn. Lệnh này khởi động máy chủ phát triển Flask.

 

Xây dựng và chạy container của bạn

 

Xây dựng image Docker

 

Chạy lệnh sau trong thư mục chứa Dockerfile của bạn:

 

docker build -t flask-app .


Điều này tạo ra một image Docker có tên là flask-app.

 

Chạy container Docker

 

Khởi động container bằng:

 

docker run -p 5000:5000 flask-app


Điều này ánh xạ cổng 5000 trên container đến cổng 5000 trên máy cục bộ của bạn. Mở trình duyệt của bạn và điều hướng đến http://localhost:5000 để xem ứng dụng Flask của bạn đang chạy.

 

Cải tiến cho sản xuất

 

Cấu hình trên phù hợp cho phát triển. Đối với sản xuất, hãy xem xét những điều sau:
 

  • Sử dụng gunicorn làm máy chủ ứng dụng thay vì máy chủ phát triển Flask.
     
  • Thêm nginx làm proxy ngược để xử lý các yêu cầu HTTP.
     
  • Sử dụng docker-compose để quản lý các dịch vụ như cơ sở dữ liệu.

 

Lỗi thường gặp và cách khắc phục

 

Thiếu phụ thuộc

 

Nếu các phụ thuộc không được cài đặt, hãy đảm bảo file requirements.txt nằm trong thư mục chính xác và xây dựng lại container:

 

docker build --no-cache -t flask-app .

 

Ứng dụng không chạy

 

Hãy đảm bảo ứng dụng Flask của bạn hoạt động cục bộ trước khi đóng gói nó vào container. Kiểm tra nhật ký container để tìm lỗi:

 

docker logs

 

Kết luận

 

Bạn vừa tạo một Dockerfile tối giản để đóng gói ứng dụng Flask của bạn. Phương pháp này cung cấp một điểm khởi đầu vững chắc để tận dụng Docker trong quy trình làm việc phát triển của bạn. Thử nghiệm với các cấu hình sản xuất và khám phá các công cụ bổ sung như Docker Compose để quản lý các thiết lập đa container.

Để tìm hiểu thêm, hãy xem Tài liệu DockerTài liệu Flask

Toàn bộ Dockerfile ở đây

 

# Sử dụng một image Python nhẹ làm cơ sở
FROM python:3.10-slim

# Đặt thư mục làm việc trong container
WORKDIR /app

# Sao chép file requirements vào container
COPY requirements.txt /app/

# Cài đặt phụ thuộc
RUN pip install --no-cache-dir -r requirements.txt

# Sao chép mã ứng dụng vào container
COPY . /app/

# Công khai cổng 5000 cho máy chủ phát triển Flask
EXPOSE 5000

# Đặt lệnh để chạy ứng dụng Flask
CMD ["python", "app.py"]

 

Tag list:
- Docker tutorial
- Flask tutorial
- Create Dockerfile for Flask app
- Lightweight Dockerfile for Flask
- Flask Docker development server
- How to use Docker with Flask
- Dockerfile basics
- Dockerize Flask application
- Flask Docker setup
- Minimal Dockerfile for Flask
- Expose port 5000 Flask Docker
- Containerize Flask with Docker
- Docker Flask step-by-step guide
- Flask app containerization
- Dockerfile example for Flask app

Theo dõi

Theo dõi bản tin của chúng tôi và không bao giờ bỏ lỡ những tin tức mới nhất.