Làm cách nào để cập nhật mã Python?

Python là một ngôn ngữ lập trình linh hoạt, nhưng việc chạy nó có thể hơi khó khăn khi bạn phải quản lý các phần phụ thuộc của nó—đặc biệt là khi bạn đang chia sẻ dự án với các nhà phát triển khác

Một giải pháp là sử dụng Docker. Công cụ container hóa chạy các ứng dụng trong một hệ thống biệt lập và quản lý các phụ thuộc. Nó tiết kiệm chi phí, hiệu quả cho việc triển khai CI/CD, có thể mở rộng và dễ sử dụng, làm cho nó trở thành một lựa chọn tốt cho các ứng dụng Python của bạn

Hướng dẫn này sẽ chỉ cho bạn cách xây dựng bộ chứa Docker để chạy một ứng dụng Python đơn giản. Nếu bạn muốn theo dõi dự án này, bạn có thể sao chép repo GitHub

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

Bạn sẽ cần những điều sau đây cho hướng dẫn này

  • Trăn 3. 9. 9
  • docker 20. 10. 5, sử dụng bản dựng 55c4c88

Thiết lập Dockerfile

Trước tiên, bạn sẽ thiết lập Dockerfile, đây là một tập hợp các lệnh tuần tự được sử dụng để xây dựng hình ảnh Docker. Đối với điều này, bạn sẽ sử dụng

FROM python:3.8-slim-buster
ENV PYTHONUNBUFFERED=1
WORKDIR /app

COPY requirements.txt requirements.txt
RUN pip install -r requirements.txt

COPY . .

EXPOSE 5000

CMD [ "python3", "-m" , "flask", "run", "--host=0.0.0.0", "--port=5000"]
8, một biến môi trường Python cho phép đầu ra Python được gửi thẳng đến thiết bị đầu cuối khi được đặt thành một chuỗi không trống hoặc được thực thi với tùy chọn
FROM python:3.8-slim-buster
ENV PYTHONUNBUFFERED=1
WORKDIR /app

COPY requirements.txt requirements.txt
RUN pip install -r requirements.txt

COPY . .

EXPOSE 5000

CMD [ "python3", "-m" , "flask", "run", "--host=0.0.0.0", "--port=5000"]
0 trên dòng lệnh

Điều này rất hữu ích khi cần thông báo tường trình trong thời gian thực. Nó cũng ngăn các sự cố như ứng dụng bị treo mà không cung cấp thông tin chi tiết liên quan do thông báo bị "kẹt" trong bộ đệm

Tạo một thư mục dự án và thay đổi thư mục bằng cách sử dụng

FROM python:3.8-slim-buster
ENV PYTHONUNBUFFERED=1
WORKDIR /app

COPY requirements.txt requirements.txt
RUN pip install -r requirements.txt

COPY . .

EXPOSE 5000

CMD [ "python3", "-m" , "flask", "run", "--host=0.0.0.0", "--port=5000"]
1


Chạy các lệnh bên dưới để tạo môi trường ảo. Điều này cô lập môi trường cho dự án Python để nó không ảnh hưởng hoặc bị ảnh hưởng bởi các dự án Python khác đang chạy trên môi trường cục bộ. Mọi phụ thuộc được cài đặt sẽ không can thiệp vào các dự án Python khác

python3 -m venv 
source /bin/activate


Sử dụng đoạn mã sau, tạo một tệp mới có tên

FROM python:3.8-slim-buster
ENV PYTHONUNBUFFERED=1
WORKDIR /app

COPY requirements.txt requirements.txt
RUN pip install -r requirements.txt

COPY . .

EXPOSE 5000

CMD [ "python3", "-m" , "flask", "run", "--host=0.0.0.0", "--port=5000"]
2 trong thư mục dự án trống

FROM python:3.8-slim-buster
ENV PYTHONUNBUFFERED=1
WORKDIR /app

COPY requirements.txt requirements.txt
RUN pip install -r requirements.txt

COPY . .

EXPOSE 5000

CMD [ "python3", "-m" , "flask", "run", "--host=0.0.0.0", "--port=5000"]

Mã này kéo hình ảnh cơ sở từ

FROM python:3.8-slim-buster
ENV PYTHONUNBUFFERED=1
WORKDIR /app

COPY requirements.txt requirements.txt
RUN pip install -r requirements.txt

COPY . .

EXPOSE 5000

CMD [ "python3", "-m" , "flask", "run", "--host=0.0.0.0", "--port=5000"]
3 và đảm bảo đầu ra được gửi thẳng đến thiết bị đầu cuối. Nó xác nhận vị trí thư mục làm việc hiện tại, ứng dụng Python sẽ được sao chép vào thư mục hiện tại và các gói trong
FROM python:3.8-slim-buster
ENV PYTHONUNBUFFERED=1
WORKDIR /app

COPY requirements.txt requirements.txt
RUN pip install -r requirements.txt

COPY . .

EXPOSE 5000

CMD [ "python3", "-m" , "flask", "run", "--host=0.0.0.0", "--port=5000"]
4 sẽ được cài đặt

lưu và đóng tập tin

Tạo ứng dụng Python

Tạo một tệp

FROM python:3.8-slim-buster
ENV PYTHONUNBUFFERED=1
WORKDIR /app

COPY requirements.txt requirements.txt
RUN pip install -r requirements.txt

COPY . .

EXPOSE 5000

CMD [ "python3", "-m" , "flask", "run", "--host=0.0.0.0", "--port=5000"]
5 và sao chép mã bên dưới

________số 8

Lưu và đóng. Điều này tạo ra một ứng dụng web Python đơn giản hiển thị văn bản

FROM python:3.8-slim-buster
ENV PYTHONUNBUFFERED=1
WORKDIR /app

COPY requirements.txt requirements.txt
RUN pip install -r requirements.txt

COPY . .

EXPOSE 5000

CMD [ "python3", "-m" , "flask", "run", "--host=0.0.0.0", "--port=5000"]
6

Tạo tệp

FROM python:3.8-slim-buster
ENV PYTHONUNBUFFERED=1
WORKDIR /app

COPY requirements.txt requirements.txt
RUN pip install -r requirements.txt

COPY . .

EXPOSE 5000

CMD [ "python3", "-m" , "flask", "run", "--host=0.0.0.0", "--port=5000"]
4. Điều này sẽ chứa các phụ thuộc cần thiết để ứng dụng chạy

Thư mục làm việc bây giờ trông như thế này

Tập tin thư mục

Chạy lệnh sau trong terminal để cài đặt khung Flask cần thiết để chạy ứng dụng Python và thêm chúng vào tệp

FROM python:3.8-slim-buster
ENV PYTHONUNBUFFERED=1
WORKDIR /app

COPY requirements.txt requirements.txt
RUN pip install -r requirements.txt

COPY . .

EXPOSE 5000

CMD [ "python3", "-m" , "flask", "run", "--host=0.0.0.0", "--port=5000"]
4.
FROM python:3.8-slim-buster
ENV PYTHONUNBUFFERED=1
WORKDIR /app

COPY requirements.txt requirements.txt
RUN pip install -r requirements.txt

COPY . .

EXPOSE 5000

CMD [ "python3", "-m" , "flask", "run", "--host=0.0.0.0", "--port=5000"]
9 hiển thị tất cả các gói được cài đặt qua pip

FROM python:3.8-slim-buster
ENV PYTHONUNBUFFERED=1
WORKDIR /app

COPY requirements.txt requirements.txt
RUN pip install -r requirements.txt

COPY . .

EXPOSE 5000

CMD [ "python3", "-m" , "flask", "run", "--host=0.0.0.0", "--port=5000"]
3

Tệp

FROM python:3.8-slim-buster
ENV PYTHONUNBUFFERED=1
WORKDIR /app

COPY requirements.txt requirements.txt
RUN pip install -r requirements.txt

COPY . .

EXPOSE 5000

CMD [ "python3", "-m" , "flask", "run", "--host=0.0.0.0", "--port=5000"]
4 không còn trống nữa

FROM python:3.8-slim-buster
ENV PYTHONUNBUFFERED=1
WORKDIR /app

COPY requirements.txt requirements.txt
RUN pip install -r requirements.txt

COPY . .

EXPOSE 5000

CMD [ "python3", "-m" , "flask", "run", "--host=0.0.0.0", "--port=5000"]
5

Kiểm tra xem ứng dụng có hoạt động không bằng cách sử dụng

 from flask import Flask
 app = Flask[__name__]

 @app.route['/']
 def hello_world[]:
     return 'Hello, Docker!'
1 rồi điều hướng đến http. //máy chủ cục bộ. 5000 trong trình duyệt ưa thích của bạn


Và nó hoạt động

Xây dựng Docker Image và Container

Bây giờ Dockerfile,

FROM python:3.8-slim-buster
ENV PYTHONUNBUFFERED=1
WORKDIR /app

COPY requirements.txt requirements.txt
RUN pip install -r requirements.txt

COPY . .

EXPOSE 5000

CMD [ "python3", "-m" , "flask", "run", "--host=0.0.0.0", "--port=5000"]
4 và
FROM python:3.8-slim-buster
ENV PYTHONUNBUFFERED=1
WORKDIR /app

COPY requirements.txt requirements.txt
RUN pip install -r requirements.txt

COPY . .

EXPOSE 5000

CMD [ "python3", "-m" , "flask", "run", "--host=0.0.0.0", "--port=5000"]
5 đã được tạo, bạn nên thử nghiệm ứng dụng Python trên môi trường cục bộ của mình để đảm bảo ứng dụng hoạt động

Bạn sẽ xây dựng Docker image từ Dockerfile đã tạo. Hình ảnh này là một tập hợp các lệnh chỉ đọc được sử dụng trong quá trình xây dựng và triển khai bộ chứa Docker

Để xây dựng hình ảnh Docker, hãy sử dụng lệnh

 from flask import Flask
 app = Flask[__name__]

 @app.route['/']
 def hello_world[]:
     return 'Hello, Docker!'
4. Thông lệ là sử dụng các thẻ;

Bạn sẽ thấy một cái gì đó như thế này

xây dựng docker

 from flask import Flask
 app = Flask[__name__]

 @app.route['/']
 def hello_world[]:
     return 'Hello, Docker!'
6 vào terminal để xem ảnh vừa tạo


Gắn thẻ hình ảnh bằng cách sử dụng

 from flask import Flask
 app = Flask[__name__]

 @app.route['/']
 def hello_world[]:
     return 'Hello, Docker!'
7

python3 -m venv 
source /bin/activate
3

Bây giờ hình ảnh Docker đã được tạo và gắn thẻ, hãy chạy hình ảnh bằng cách sử dụng

 from flask import Flask
 app = Flask[__name__]

 @app.route['/']
 def hello_world[]:
     return 'Hello, Docker!'
8 để xây dựng vùng chứa

Xây dựng thùng chứa

Sau đó, sử dụng

 from flask import Flask
 app = Flask[__name__]

 @app.route['/']
 def hello_world[]:
     return 'Hello, Docker!'
9 để xem danh sách các container hiện tại

Xem danh sách

Bây giờ bạn có thể kiểm tra ứng dụng của mình bằng http. //máy chủ cục bộ. 5000 trên trình duyệt ưa thích của bạn. Bạn đã chạy ứng dụng Python của mình bên trong bộ chứa Docker

Chạy Docker Push

Hình ảnh vùng chứa có thể được đẩy và truy xuất từ ​​sổ đăng ký Docker Hub. Docker Hub là một thư viện mã nguồn mở và cộng đồng cho container image. Hình ảnh được đẩy có thể được chia sẻ giữa các nhóm, khách hàng và cộng đồng. Nó sử dụng một lệnh duy nhất,

FROM python:3.8-slim-buster
ENV PYTHONUNBUFFERED=1
WORKDIR /app

COPY requirements.txt requirements.txt
RUN pip install -r requirements.txt

COPY . .

EXPOSE 5000

CMD [ "python3", "-m" , "flask", "run", "--host=0.0.0.0", "--port=5000"]
30

Để có tên người dùng trung tâm, hãy đăng ký trên trang web. Sau đó, nhấp vào Tạo kho lưu trữ ở góc trên cùng bên phải của trang

Tạo kho lưu trữ

Đặt tên và mô tả cho repo, sau đó nhấp vào Tạo

Tạo một repo

Bạn sẽ được tự động chuyển đến trang hiển thị bên dưới

Docker đẩy

Sao chép lệnh ở bên phải trang vào thiết bị đầu cuối của bạn, thay thế

FROM python:3.8-slim-buster
ENV PYTHONUNBUFFERED=1
WORKDIR /app

COPY requirements.txt requirements.txt
RUN pip install -r requirements.txt

COPY . .

EXPOSE 5000

CMD [ "python3", "-m" , "flask", "run", "--host=0.0.0.0", "--port=5000"]
31 bằng một phiên bản hoặc bằng từ
 from flask import Flask
 app = Flask[__name__]

 @app.route['/']
 def hello_world[]:
     return 'Hello, Docker!'
5

Trong thiết bị đầu cuối của bạn, hãy chạy lệnh

FROM python:3.8-slim-buster
ENV PYTHONUNBUFFERED=1
WORKDIR /app

COPY requirements.txt requirements.txt
RUN pip install -r requirements.txt

COPY . .

EXPOSE 5000

CMD [ "python3", "-m" , "flask", "run", "--host=0.0.0.0", "--port=5000"]
33 để kết nối kho lưu trữ từ xa với môi trường cục bộ. Thêm tên người dùng và mật khẩu của bạn để xác thực thông tin đăng nhập của bạn, như hình bên dưới

đăng nhập docker

Chạy lệnh

FROM python:3.8-slim-buster
ENV PYTHONUNBUFFERED=1
WORKDIR /app

COPY requirements.txt requirements.txt
RUN pip install -r requirements.txt

COPY . .

EXPOSE 5000

CMD [ "python3", "-m" , "flask", "run", "--host=0.0.0.0", "--port=5000"]
34

Đẩy hình ảnh

Xác nhận rằng hình ảnh của bạn đã được đẩy bằng cách tải lại trang Docker Hub

Trang trung tâm Docker

Trong bất kỳ thiết bị đầu cuối nào, hãy chạy

FROM python:3.8-slim-buster
ENV PYTHONUNBUFFERED=1
WORKDIR /app

COPY requirements.txt requirements.txt
RUN pip install -r requirements.txt

COPY . .

EXPOSE 5000

CMD [ "python3", "-m" , "flask", "run", "--host=0.0.0.0", "--port=5000"]
35 để kéo hình ảnh Docker

Kéo hình ảnh

Chạy Docker Compose

Bây giờ bạn có thể xây dựng, chạy, đẩy và kéo hình ảnh Docker. Còn việc xây dựng nhiều container thì sao?

Docker Compose được sử dụng trong quá trình

  • Môi trường kiểm thử tự động. Docker Compose giúp dễ dàng tạo và hủy các môi trường bị cô lập trong quá trình thử nghiệm để tích hợp liên tục và phân phối liên tục [CI/CD] bằng cách sử dụng các lệnh đơn giản như
    FROM python:3.8-slim-buster
    ENV PYTHONUNBUFFERED=1
    WORKDIR /app
    
    COPY requirements.txt requirements.txt
    RUN pip install -r requirements.txt
    
    COPY . .
    
    EXPOSE 5000
    
    CMD [ "python3", "-m" , "flask", "run", "--host=0.0.0.0", "--port=5000"]
    36
  • môi trường phát triển. Một khía cạnh quan trọng của phát triển phần mềm là sự cô lập của các môi trường. Docker Compose tạo các môi trường này và cho phép bạn tương tác, lập tài liệu và định cấu hình tất cả các phụ thuộc dịch vụ của ứng dụng

Một tệp

FROM python:3.8-slim-buster
ENV PYTHONUNBUFFERED=1
WORKDIR /app

COPY requirements.txt requirements.txt
RUN pip install -r requirements.txt

COPY . .

EXPOSE 5000

CMD [ "python3", "-m" , "flask", "run", "--host=0.0.0.0", "--port=5000"]
37 đơn giản trông như thế này

FROM python:3.8-slim-buster
ENV PYTHONUNBUFFERED=1
WORKDIR /app

COPY requirements.txt requirements.txt
RUN pip install -r requirements.txt

COPY . .

EXPOSE 5000

CMD [ "python3", "-m" , "flask", "run", "--host=0.0.0.0", "--port=5000"]
4

Sử dụng Docker Volumes

Đôi khi Docker image và container vô tình bị xóa. Khối lượng docker giúp duy trì các vùng chứa và hình ảnh này để lưu trữ dữ liệu, vì vậy bạn không bị mất bất cứ thứ gì trong trường hợp vô tình xóa

Để hiển thị khối lượng, sử dụng

FROM python:3.8-slim-buster
ENV PYTHONUNBUFFERED=1
WORKDIR /app

COPY requirements.txt requirements.txt
RUN pip install -r requirements.txt

COPY . .

EXPOSE 5000

CMD [ "python3", "-m" , "flask", "run", "--host=0.0.0.0", "--port=5000"]
38

Hiển thị khối lượng

Hiện tại không có khối lượng trên hệ thống này. Để tạo âm lượng trong thiết bị đầu cuối, hãy chạy

FROM python:3.8-slim-buster
ENV PYTHONUNBUFFERED=1
WORKDIR /app

COPY requirements.txt requirements.txt
RUN pip install -r requirements.txt

COPY . .

EXPOSE 5000

CMD [ "python3", "-m" , "flask", "run", "--host=0.0.0.0", "--port=5000"]
39 và sử dụng lại
FROM python:3.8-slim-buster
ENV PYTHONUNBUFFERED=1
WORKDIR /app

COPY requirements.txt requirements.txt
RUN pip install -r requirements.txt

COPY . .

EXPOSE 5000

CMD [ "python3", "-m" , "flask", "run", "--host=0.0.0.0", "--port=5000"]
38 để xác nhận âm lượng đã được tạo

Tạo âm lượng

Sử dụng

FROM python:3.8-slim-buster
ENV PYTHONUNBUFFERED=1
WORKDIR /app

COPY requirements.txt requirements.txt
RUN pip install -r requirements.txt

COPY . .

EXPOSE 5000

CMD [ "python3", "-m" , "flask", "run", "--host=0.0.0.0", "--port=5000"]
51, kiểm tra ổ đĩa để xem thông tin quan trọng về nó

kiểm tra khối lượng

Hiện tại không có thùng chứa nào được đính kèm với tập này. Đính kèm vùng chứa vào ổ đĩa bằng cách sử dụng như sau

FROM python:3.8-slim-buster
ENV PYTHONUNBUFFERED=1
WORKDIR /app

COPY requirements.txt requirements.txt
RUN pip install -r requirements.txt

COPY . .

EXPOSE 5000

CMD [ "python3", "-m" , "flask", "run", "--host=0.0.0.0", "--port=5000"]
9

Chạy

FROM python:3.8-slim-buster
ENV PYTHONUNBUFFERED=1
WORKDIR /app

COPY requirements.txt requirements.txt
RUN pip install -r requirements.txt

COPY . .

EXPOSE 5000

CMD [ "python3", "-m" , "flask", "run", "--host=0.0.0.0", "--port=5000"]
52 và cuộn xuống phần
FROM python:3.8-slim-buster
ENV PYTHONUNBUFFERED=1
WORKDIR /app

COPY requirements.txt requirements.txt
RUN pip install -r requirements.txt

COPY . .

EXPOSE 5000

CMD [ "python3", "-m" , "flask", "run", "--host=0.0.0.0", "--port=5000"]
53 để xác nhận xem ổ đĩa đã được gắn vào thùng chứa chưa

Khối lượng đính kèm

Kiểm tra tính bền bỉ

Chạy

FROM python:3.8-slim-buster
ENV PYTHONUNBUFFERED=1
WORKDIR /app

COPY requirements.txt requirements.txt
RUN pip install -r requirements.txt

COPY . .

EXPOSE 5000

CMD [ "python3", "-m" , "flask", "run", "--host=0.0.0.0", "--port=5000"]
54 để chạy phiên tương tác với vùng chứa bằng Ubuntu làm hình ảnh cơ sở

phiên chạy

Để kiểm tra hệ thống tệp, hãy

FROM python:3.8-slim-buster
ENV PYTHONUNBUFFERED=1
WORKDIR /app

COPY requirements.txt requirements.txt
RUN pip install -r requirements.txt

COPY . .

EXPOSE 5000

CMD [ "python3", "-m" , "flask", "run", "--host=0.0.0.0", "--port=5000"]
55 vào thư mục ứng dụng, tạo tệp và thoát

Kiểm tra hệ thống tập tin

Liệt kê các bộ chứa Docker và xóa bộ chứa

FROM python:3.8-slim-buster
ENV PYTHONUNBUFFERED=1
WORKDIR /app

COPY requirements.txt requirements.txt
RUN pip install -r requirements.txt

COPY . .

EXPOSE 5000

CMD [ "python3", "-m" , "flask", "run", "--host=0.0.0.0", "--port=5000"]
56 bằng cách sử dụng
FROM python:3.8-slim-buster
ENV PYTHONUNBUFFERED=1
WORKDIR /app

COPY requirements.txt requirements.txt
RUN pip install -r requirements.txt

COPY . .

EXPOSE 5000

CMD [ "python3", "-m" , "flask", "run", "--host=0.0.0.0", "--port=5000"]
57

Liệt kê container

FROM python:3.8-slim-buster
ENV PYTHONUNBUFFERED=1
WORKDIR /app

COPY requirements.txt requirements.txt
RUN pip install -r requirements.txt

COPY . .

EXPOSE 5000

CMD [ "python3", "-m" , "flask", "run", "--host=0.0.0.0", "--port=5000"]
6

Tạo một vùng chứa tương tác khác sử dụng cùng một ổ đĩa,

FROM python:3.8-slim-buster
ENV PYTHONUNBUFFERED=1
WORKDIR /app

COPY requirements.txt requirements.txt
RUN pip install -r requirements.txt

COPY . .

EXPOSE 5000

CMD [ "python3", "-m" , "flask", "run", "--host=0.0.0.0", "--port=5000"]
55 vào ứng dụng vùng chứa và xem các tệp của nó. Bạn sẽ thấy rằng tệp vẫn tồn tại mặc dù vùng chứa đã bị hủy

Tập tin vẫn tồn tại

Phần kết luận

Sử dụng Docker cung cấp cho bạn rất nhiều tùy chọn cho các ứng dụng Python của bạn. Như bạn đã thấy trong hướng dẫn này, bạn có thể sử dụng Docker để kiểm tra và lưu trữ ứng dụng của mình và thậm chí bảo vệ dữ liệu của bạn trong trường hợp vô tình xóa. Hình ảnh bộ chứa docker rất linh hoạt và có thể được lưu vào bộ đệm để sử dụng ở mọi nơi

Bạn có thể tối ưu hóa việc sử dụng vùng chứa của mình hơn nữa với Earthly, một cú pháp cho các bản dựng có thể lặp lại. Các bản dựng tự động, khép kín của nó giúp cuộc sống của bạn dễ dàng hơn bằng cách cải thiện quy trình làm việc của bạn

Để xem toàn bộ dự án hướng dẫn cùng một lúc, hãy xem repo GitHub

Trong khi bạn ở đây

Earthly là khung CI/CD dễ dàng.
Phát triển đường dẫn CI/CD cục bộ và chạy chúng ở mọi nơi.

Adedoyin Adeyemi

Tôi khởi nghiệp với tư cách là nhà phát triển giao diện người dùng và sau đó tham gia trại huấn luyện đám mây được tổ chức cùng với đối tác đám mây số một của Google ở ​​Châu Phi

Làm cách nào để chuyển đổi Python sang Docker?

Hãy cho chúng tôi xem làm thế nào nó có thể được thực hiện trong một vài bước đơn giản. .
Bước 1. Xác định tệp yêu cầu. Vì chúng tôi cần thư viện yêu cầu để thực hiện lệnh gọi API, hãy để chúng tôi xác định một yêu cầu. .
Bước 2. Tạo tập lệnh Python. .
Bước 3. Xác định Dockerfile. .
Bước 4. Xây dựng và chạy bộ chứa Docker

Làm cách nào để cài đặt Python bằng Dockerfile?

Tạo Dockerfile .
TỪ con trăn. 3. .
THÊM my_script. py /.
CHẠY pip cài đặt pystrich. .
CMD [ "con trăn", ". /my_script. py" ].
TỪ con trăn. 3 THÊM my_script. py / CHẠY pip cài đặt pystrich CMD [ "trăn", ". /my_script. py" ]

Docker có hoạt động với Python không?

Không cần cài đặt các ứng dụng của bên thứ 3 như PostgreSQL, Redis, Elaticsearch trên hệ thống – bạn có thể chạy nó trong các thùng chứa. Docker trong Python cũng cung cấp cho bạn khả năng chạy đồng thời các phiên bản khác nhau của cùng một ứng dụng .

Chủ Đề