Cách Chạy Python Trong Một Bình Docker

Xin chào các bạn đang học lập trình Python! Tôi rất vui mừng được làm hướng dẫn viên của bạn trong hành trình thú vị vào thế giới của Docker và Python. Là một người đã dạy khoa học máy tính trong nhiều năm, tôi có thể告诉 bạn rằng việc kết hợp hai công nghệ mạnh mẽ này có thể là một bước ngoặt trong quy trình phát triển của bạn. Hãy cùng nhau khám phá cách chúng ta có thể chạy Python trong một bình Docker!

Docker Setting - Python

Docker Là Gì Và Tại Sao Bạn Nên Quan Tâm?

Trước khi chúng ta nhảy vào chi tiết, hãy dành một chút thời gian để hiểu Docker là gì và tại sao nó lại quan trọng. Hãy tưởng tượng bạn đang nướng một chiếc bánh. Bạn có công thức (mã của bạn), nguyên liệu (các phụ thuộc của bạn) và các công cụ nấu ăn (môi trường phát triển của bạn). Bây giờ, liệu có tuyệt vời không nếu bạn có thể gói tất cả những thứ này lại và mang chúng đi bất kỳ đâu? Đó chính là điều Docker làm cho các dự án Python của bạn!

Docker cho phép bạn tạo, triển khai và chạy các ứng dụng trong các bình (containers). Các bình này nhẹ, di động và nhất quán, có thể chạy trên bất kỳ máy nào có cài Docker. Điều này có nghĩa là bạn có thể nói lời tạm biệt với vấn đề "nhưng nó hoạt động trên máy của tôi"!

Bây giờ, hãy cùng nhau làm quen và học cách chạy Python trong một bình Docker.

Cách Chạy Python Trong Docker Sử Dụng Dockerfiles?

Một Dockerfile giống như một công thức cho bình Docker của bạn. Nó chứa một bộ hướng dẫn mà Docker sử dụng để tạo một ảnh (image), sau đó sử dụng để tạo một bình. Hãy cùng tạo một Dockerfile đơn giản cho một ứng dụng Python:

# Sử dụng một ảnh Python chính thức làm ảnh cha
FROM python:3.9-slim

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

# Sao chép nội dung thư mục hiện tại vào bình tại /app
COPY . /app

# Cài đặt bất kỳ gói cần thiết nào được liệt kê trong requirements.txt
RUN pip install --no-cache-dir -r requirements.txt

# Khai báo cổng 80 để sử dụng bên ngoài bình
EXPOSE 80

# Định nghĩa biến môi trường
ENV NAME World

# Chạy app.py khi bình khởi động
CMD ["python", "app.py"]

Hãy phân tích này:

  1. FROM python:3.9-slim: Điều này告诉 Docker sử dụng ảnh Python 3.9 làm cơ sở.
  2. WORKDIR /app: Đặt thư mục làm việc trong bình.
  3. COPY . /app: Sao chép nội dung thư mục hiện tại vào bình.
  4. RUN pip install --no-cache-dir -r requirements.txt: Cài đặt các gói Python cần thiết.
  5. EXPOSE 80: Khai báo cổng 80 để sử dụng bên ngoài bình.
  6. ENV NAME World: Định nghĩa biến môi trường.
  7. CMD ["python", "app.py"]: Xác định lệnh chạy khi bình khởi động.

Bây giờ, hãy tạo một tệp app.py đơn giản:

import os
name = os.environ.get('NAME', "World")
print(f"Xin chào, {name}!")

Để xây dựng và chạy bình Docker này, sử dụng các lệnh sau:

docker build -t my-python-app .
docker run my-python-app

Và voilà! Bạn nên thấy "Xin chào, World!" được in trên console của bạn.

Cách Chạy Python Sử Dụng Docker Compose?

Docker Compose giống như một người chỉ huy cho dàn nhạc Docker của bạn. Nó cho phép bạn xác định và chạy các ứng dụng Docker đa bình. Hãy cùng tạo một tệp docker-compose.yml cho ứng dụng Python của chúng ta:

version: '3'
services:
web:
build: .
ports:
- "5000:80"
volumes:
- .:/app
environment:
- NAME=Docker Compose

Tệp này告诉 Docker Compose để:

  1. Xây dựng một ảnh sử dụng Dockerfile của chúng ta.
  2. Map cổng 5000 trên máy chủ sang cổng 80 trong bình.
  3. Gắn kết thư mục hiện tại vào /app trong bình.
  4. Đặt biến môi trường NAME thành "Docker Compose".

Để chạy này, đơn giản sử dụng:

docker-compose up

Cách Chạy Python Trong Môi Trường Ảo Trong Docker?

Chạy Python trong môi trường ảo trong một bình Docker có thể trông có vẻ dư thừa, nhưng nó có thể hữu ích trong một số tình huống. Hãy thay đổi Dockerfile của chúng ta để bao gồm một môi trường ảo:

FROM python:3.9-slim

WORKDIR /app

COPY requirements.txt .

RUN python -m venv /opt/venv
ENV PATH="/opt/venv/bin:$PATH"

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

COPY . .

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

Dockerfile này tạo một môi trường ảo trong /opt/venv, kích hoạt nó và sau đó cài đặt các yêu cầu.

Kết Luận

Chúc mừng! Bạn đã học cách chạy Python trong một bình Docker sử dụng Dockerfiles, Docker Compose, và thậm chí cả môi trường ảo. Đây là một kỹ năng mạnh mẽ sẽ phục vụ bạn tốt trong hành trình lập trình Python của bạn.

Nhớ rằng, Docker là về tính nhất quán và tính di động. Nó cho phép bạn gói ứng dụng Python của bạn với tất cả các phụ thuộc và chạy chúng ở bất kỳ đâu Docker được cài đặt. Điều này có thể làm đơn giản hóa quy trình triển khai và hợp tác.

Khi chúng ta kết thúc, đây là bảng tóm tắt các lệnh Docker chính mà chúng ta đã học:

Lệnh Mô tả
docker build -t <image-name> . Xây dựng một ảnh Docker
docker run <image-name> Chạy một bình Docker
docker-compose up Khởi động các dịch vụ được xác định trong docker-compose.yml
docker-compose down Dừng và loại bỏ các bình, mạng, ảnh và thể tích

Tiếp tục thực hành, tiếp tục khám phá, và quan trọng nhất, hãy vui vẻ với Python và Docker! Nhớ rằng, mỗi người thợ là một người mới bắt đầu. Hành trình của bạn vừa bắt đầu, và tôi không thể chờ đợi để thấy những điều kỳ diệu bạn sẽ tạo ra. Chúc bạn may mắn!

Credits: Image by storyset