Trên Linux, bạn cũng nên bật Docker CLI cho tài khoản người dùng không root sẽ được sử dụng để chạy Mã VS
Tiện ích mở rộng Docker. Để cài đặt tiện ích mở rộng, hãy mở chế độ xem Tiện ích mở rộng [ ⇧⌘X [Windows, Linux Ctrl+Shift+X< . ]], search for
from flask import Flask
app = Flask[__name__] # Flask instance named app
2 to filter results and select Docker extension authored by Microsoft.Tạo một dự án Python
Nếu bạn chưa có dự án Python, hãy làm theo hướng dẫn Bắt đầu với Python
Ghi chú. Nếu bạn muốn chứa một ứng dụng web Django hoặc Flask hoàn chỉnh, bạn có thể bắt đầu với một trong các mẫu sau
python-sample-vscode-django-tutorial, đây là kết quả của việc làm theo Hướng dẫn Django
python-sample-vscode-flask-tutorial, đây là kết quả của việc làm theo Hướng dẫn Flask
Ghi chú. Đối với hướng dẫn này, hãy đảm bảo sử dụng nhánh hướng dẫn của repos mẫu
Sau khi xác minh ứng dụng của bạn chạy đúng cách, bây giờ bạn có thể chứa ứng dụng của mình
Thêm tệp Docker vào dự án
Mở thư mục dự án trong Mã VS
Mở Bảng lệnh [ ⇧⌘P [Windows, Linux Ctrl+Shift+P< . Thêm tệp Docker vào không gian làm việc. ]] and choose Docker: Add Docker Files to Workspace...:
Khi được nhắc về loại ứng dụng, hãy chọn Python. Django, Python. Flask hoặc Python. Chung như loại ứng dụng. Đối với hướng dẫn này, chúng ta sẽ tập trung vào Python. Trường hợp chung, nhưng cũng sẽ bao gồm ghi chú cho Django và Flask
Nhập đường dẫn tương đối đến điểm vào của ứng dụng. Điều này loại trừ thư mục không gian làm việc mà bạn bắt đầu từ đó. Nếu bạn đã tạo một ứng dụng python với
3 theo hướng dẫn Bắt đầu với Python, hãy chọn ứng dụng đófrom flask import Flask app = Flask[__name__] # Flask instance named app
Django. Chọn
4 [thư mục gốc] hoặcfrom flask import Flask app = Flask[__name__] # Flask instance named app
5. Xem tài liệu chính thức của Djangofrom flask import Flask app = Flask[__name__] # Flask instance named app
Bình giữ nhiệt. Chọn đường dẫn đến nơi bạn tạo phiên bản Flask của mình. Xem tài liệu Flask chính thức
Mẹo. Bạn cũng có thể nhập đường dẫn đến tên thư mục miễn là thư mục này bao gồm tệp
6from flask import Flask app = Flask[__name__] # Flask instance named app
Chọn số cổng. Chúng tôi khuyên bạn nên chọn cổng 1024 trở lên để giảm thiểu các lo ngại về bảo mật khi chạy với tư cách người dùng root. Mọi cổng không sử dụng sẽ chuyển, nhưng Django và Flask sử dụng các cổng mặc định tiêu chuẩn
Django. Cổng mặc định 8000
Bình giữ nhiệt. Cổng mặc định là 5000
Khi được nhắc bao gồm Docker Compose, hãy chọn Không nếu bạn không muốn có tệp Docker Compose. Nếu bạn chọn Có, bạn sẽ cần xác minh đường dẫn đến tệp
7 của mình trongfrom flask import Flask app = Flask[__name__] # Flask instance named app
8 để chạy lệnh Soạn thư thành công. Compose thường được sử dụng khi chạy nhiều container cùng một lúcfrom flask import Flask app = Flask[__name__] # Flask instance named app
Với tất cả thông tin này, tiện ích mở rộng Docker tạo các tệp sau
Một
8. Để tìm hiểu thêm về IntelliSense trong tệp này, hãy tham khảo tổng quanfrom flask import Flask app = Flask[__name__] # Flask instance named app
Tệp
2 để giảm kích thước hình ảnh bằng cách loại trừ các tệp và thư mục không cần thiết, chẳng hạn nhưfrom flask import Flask app = Flask[__name__] # Flask instance named app
3,from flask import Flask app = Flask[__name__] # Flask instance named app
4 vàfrom flask import Flask app = Flask[__name__] # Flask instance named app
5from flask import Flask app = Flask[__name__] # Flask instance named app
Nếu bạn đang sử dụng Docker Compose, tệp
6 vàfrom flask import Flask app = Flask[__name__] # Flask instance named app
7from flask import Flask app = Flask[__name__] # Flask instance named app
Nếu chưa tồn tại, tệp
8 để ghi lại tất cả các phụ thuộc của ứng dụngfrom flask import Flask app = Flask[__name__] # Flask instance named app
Lưu ý quan trọng. Để sử dụng thiết lập của chúng tôi, khung Python [Django/Flask] và Gunicorn phải được đưa vào tệp
8. Nếu môi trường ảo/máy chủ đã cài đặt các điều kiện tiên quyết này và được cho là giống hệt với môi trường vùng chứa, hãy đảm bảo các phần phụ thuộc của ứng dụng được chuyển qua bằng cách chạyfrom flask import Flask app = Flask[__name__] # Flask instance named app
0 trong thiết bị đầu cuối. Thao tác này sẽ ghi đè lên tệpCMD ["gunicorn", "--bind", "0.0.0.0:5000", "{subfolder}.{module_file}:app"]
8 hiện tại của bạnfrom flask import Flask app = Flask[__name__] # Flask instance named app
[Tùy chọn] Thêm biến môi trường vào hình ảnh
Bước này không bắt buộc nhưng được đưa vào để giúp bạn hiểu cách thêm các biến môi trường cần đặt trong môi trường của vùng chứa
Tiện ích mở rộng Docker giúp bạn tạo Dockerfiles bằng cách sử dụng IntelliSense để cung cấp tính năng tự động hoàn thành và trợ giúp theo ngữ cảnh. Để xem tính năng này hoạt động
Mở
8from flask import Flask app = Flask[__name__] # Flask instance named app
Bên dưới câu lệnh
3, nhập ⌃Dấu cách [Windows, Linux Ctrl+Dấu cách] to trigger IntelliSense and scroll toCMD ["gunicorn", "--bind", "0.0.0.0:5000", "{subfolder}.{module_file}:app"]
4.CMD ["gunicorn", "--bind", "0.0.0.0:5000", "{subfolder}.{module_file}:app"]
Nhấn Tab hoặc Enter để hoàn thành câu lệnh, .
Để biết thêm thông tin về cài đặt và sử dụng các biến môi trường trong Dockerfile, hãy xem phần Thay thế môi trường và hướng dẫn ENV trong tài liệu Docker
Sửa đổi Gunicorn cho ứng dụng Django và Flask
Để cung cấp cho các nhà phát triển web Python một điểm khởi đầu tuyệt vời, chúng tôi đã chọn sử dụng Gunicorn làm máy chủ web mặc định. Vì nó được tham chiếu trong Dockerfile mặc định nên nó được bao gồm như một phần phụ thuộc trong tệp
from flask import Flask
app = Flask[__name__] # Flask instance named app
8. Nếu bạn không nhìn thấy nó trong from flask import Flask
app = Flask[__name__] # Flask instance named app
8, hãy chạy CMD ["gunicorn", "--bind", "0.0.0.0:5000", "{subfolder}.{module_file}:app"]
9 rồi chạy CMD ["gunicorn", "--bind", "0.0.0.0:5000", "{subfolder}.{module_file}:app"]
0 để tạo lại tệp from flask import Flask
app = Flask[__name__] # Flask instance named app
8Django. Để sử dụng Gunicorn, nó phải liên kết với một ứng dụng có thể gọi được [thứ mà máy chủ ứng dụng sử dụng để giao tiếp với mã của bạn] làm điểm vào. Có thể gọi được này được khai báo trong tệp
7 của ứng dụng Django. Để thực hiện ràng buộc này, dòng cuối cùng trong Dockerfile cho biếtfrom flask import Flask app = Flask[__name__] # Flask instance named app
9from flask import Flask app = Flask[__name__] # Flask instance named app
Nếu dự án của bạn không tuân theo cấu trúc dự án mặc định của Django [nghĩa là thư mục không gian làm việc và tệp wsgi. py > trong thư mục con có tên giống như không gian làm việc], bạn phải ghi đè điểm nhập Gunicorn trong Dockerfile để tìm đúng tệp
7from flask import Flask app = Flask[__name__] # Flask instance named app
Nếu tệp
7 của bạn nằm trong thư mục gốc, đối số cuối cùng trong lệnh trên sẽ làfrom flask import Flask app = Flask[__name__] # Flask instance named app
85. Trong các thư mục con, đối số sẽ làfrom flask import Flask app = Flask[__name__] # Flask instance named app
86from flask import Flask app = Flask[__name__] # Flask instance named app
Bình giữ nhiệt. Để sử dụng Gunicorn, nó phải liên kết với một ứng dụng có thể gọi được [thứ mà máy chủ ứng dụng sử dụng để giao tiếp với mã của bạn] làm điểm vào. Có thể gọi này tương ứng với vị trí tệp và tên biến của phiên bản Flask đã tạo của bạn. Theo Tài liệu Flask chính thức, người dùng thường tạo một phiên bản Flask trong mô-đun chính hoặc trong tệp
87 của gói của họ theo cách nàyfrom flask import Flask app = Flask[__name__] # Flask instance named app
from flask import Flask app = Flask[__name__] # Flask instance named app
Để thực hiện ràng buộc này, dòng cuối cùng trong Dockerfile cho biết
________số 8Trong Docker. Thêm tệp Docker vào không gian làm việc. lệnh, bạn định cấu hình đường dẫn đến phiên bản Flask, tuy nhiên, tiện ích mở rộng Docker giả sử biến phiên bản Flask của bạn có tên là
88. Nếu không phải như vậy, bạn phải thay đổi tên biến trong Dockerfilefrom flask import Flask app = Flask[__name__] # Flask instance named app
Nếu mô-đun chính của bạn nằm trong thư mục gốc dưới dạng tệp có tên là
89 và có một biến thực thể Flask có tên làfrom flask import Flask app = Flask[__name__] # Flask instance named app
20, thì đối số cuối cùng trong lệnh trên sẽ làfrom flask import Flask app = Flask[__name__] # Flask instance named app
21. Trong các thư mục con, đối số sẽ làfrom flask import Flask app = Flask[__name__] # Flask instance named app
22from flask import Flask app = Flask[__name__] # Flask instance named app
Xây dựng, chạy và gỡ lỗi vùng chứa
Docker. Thêm tệp Docker vào không gian làm việc. lệnh tự động tạo cấu hình khởi chạy Docker để xây dựng và chạy vùng chứa của bạn ở chế độ gỡ lỗi. Để gỡ lỗi vùng chứa ứng dụng Python của bạn
Điều hướng đến tệp chứa mã khởi động ứng dụng của bạn và đặt điểm ngắt
Điều hướng đến Run and Debug và chọn Docker. Python - Chung, Docker. Python - Django hoặc Docker. Python - Flask, khi thích hợp
Bắt đầu gỡ lỗi bằng phím F5 .
- Bản dựng hình ảnh Docker
- Bộ chứa Docker chạy
- Trình gỡ lỗi python dừng ở điểm dừng
Bước qua dòng này một lần
Khi đã sẵn sàng, nhấn tiếp tục
Tiện ích mở rộng Docker sẽ khởi chạy trình duyệt của bạn tới một cổng được ánh xạ ngẫu nhiên
Mẹo. Để sửa đổi cài đặt bản dựng Docker của bạn, chẳng hạn như thay đổi thẻ hình ảnh, hãy điều hướng đến
23 bên dưới thuộc tínhfrom flask import Flask app = Flask[__name__] # Flask instance named app
24 trong tác vụfrom flask import Flask app = Flask[__name__] # Flask instance named app
25. Sử dụng IntelliSense trong tệp [ ⌃Space [Windows, Linux Ctrl+Space]] to display all other valid directives.from flask import Flask app = Flask[__name__] # Flask instance named app
Sử dụng Docker Explorer
Docker Explorer cung cấp trải nghiệm tương tác để kiểm tra và quản lý các tài sản Docker như vùng chứa, hình ảnh, v.v. Để xem một ví dụ
Điều hướng đến Docker Explorer
Trong tab Vùng chứa, nhấp chuột phải vào vùng chứa của bạn và chọn Xem Nhật ký
Đầu ra sẽ được hiển thị trong thiết bị đầu cuối
Xây dựng hình ảnh trong Azure
Bạn có thể sử dụng lệnh Azure Container Registry. Xây dựng hình ảnh trong Azure để xây dựng hình ảnh mà sau đó bạn có thể triển khai sang Dịch vụ ứng dụng Azure
Cài đặt tiện ích mở rộng tài khoản Azure. Mở Bảng lệnh [ ⇧⌘P [Windows, Linux Ctrl+Shift+P]] and search for the command Azure: Sign In. If you don't have an Azure account, you can sign up for a free trial.
Có hai cách để gọi lệnh xây dựng trong Azure. Bạn có thể nhấp chuột phải vào Dockerfile và chọn Build Image in Azure. Bạn cũng có thể sử dụng Bảng lệnh [ ⇧⌘P [Windows, Linux Ctrl+Shift+P]] and search for the command Azure Container Registry: Build Image in Azure.
Chọn tên và thẻ cho hình ảnh được xây dựng. Bạn sẽ sử dụng điều này để xác định nó trong sổ đăng ký vùng chứa
Chọn đăng ký Azure bạn muốn sử dụng
Chọn Sổ đăng ký bộ chứa Azure hiện có hoặc tạo một sổ đăng ký mới. Khi bạn tạo một tài khoản mới, bạn được yêu cầu cung cấp tên, nhóm tài nguyên, vị trí và tùy chọn định giá, chẳng hạn như Cơ bản, Tiêu chuẩn hoặc Cao cấp. Bạn có thể đọc về chi phí của các tùy chọn này tại Định giá - Đăng ký vùng chứa
Chỉ định hệ điều hành cơ sở, Linux hoặc Windows. Lựa chọn này phải phù hợp với Dockerfile
Quá trình xây dựng hình ảnh có thể mất vài phút. Bạn có thể theo dõi tiến trình trong thiết bị đầu cuối. Nếu bạn gặp lỗi [
from flask import Flask
app = Flask[__name__] # Flask instance named app
26], hãy thử sử dụng tùy chọn Làm mới trên sổ đăng ký vùng chứa rồi yêu cầu một bản dựng khác. Trước khi xây dựng lại, hãy xóa hình ảnh cũ theo cách thủ côngTriển khai cho Dịch vụ ứng dụng Azure
Sau khi hình ảnh vùng chứa được tạo, nó sẽ xuất hiện trong Cơ quan đăng ký vùng chứa với thẻ bạn đã chỉ định. Bây giờ nó đã được xây dựng, bạn có thể triển khai nó vào Dịch vụ ứng dụng Azure. Bạn không cần cài đặt tiện ích mở rộng Dịch vụ ứng dụng Azure để bắt đầu, mặc dù tiện ích này có thể hữu ích để quản lý dịch vụ ứng dụng. Bạn có thể cài đặt nó từ Dịch vụ ứng dụng Azure, nhưng chúng tôi khuyên bạn nên cài đặt gói tiện ích mở rộng Công cụ Azure, gói này bao gồm một gói công cụ dành cho nhiều tình huống phát triển Azure
Nhấp chuột phải vào thẻ hình ảnh và chọn Deploy Image to to Azure App Service
Cung cấp tên của trang web. Đây phải là một tên duy nhất và đối với các ứng dụng Django, nó cũng phải được liệt kê dưới dạng tên máy chủ hợp lệ trong danh sách
27 trong tệpfrom flask import Flask app = Flask[__name__] # Flask instance named app
28from flask import Flask app = Flask[__name__] # Flask instance named app
Cung cấp nhóm tài nguyên, vị trí và Gói dịch vụ ứng dụng. Nếu bạn mới bắt đầu, bạn có thể chọn gói miễn phí
Hình ảnh được triển khai; . Khi nó được triển khai, một thông báo sẽ xuất hiện với một nút mà bạn có thể sử dụng để truy cập trang web. Bạn cũng có thể sử dụng địa chỉ của trang web,
29 trong đófrom flask import Flask app = Flask[__name__] # Flask instance named app
30 là tên bạn đã đặt khi tạo trang web. Nếu nó không hoạt động lúc đầu, hãy thử lại sau vài phút. Không có gì lạ khi một vài lần thử đầu tiên hết thời gian chờ hoặc trả về lỗi. Điều đó chỉ có nghĩa là Dịch vụ ứng dụng chưa sẵn sàng nhận yêu cầufrom flask import Flask app = Flask[__name__] # Flask instance named app
Thực hiện một thay đổi nhỏ trong mã ứng dụng hiển thị trên một trong các trang và lưu tệp
Sử dụng biểu tượng Azure để mở dạng xem Tài nguyên và mở rộng nút cho đăng ký của bạn để tìm Dịch vụ ứng dụng mà bạn đã triển khai ở bước trước
Nhấp chuột phải vào nút Dịch vụ ứng dụng và xem các tùy chọn khả dụng. Chọn Deploy to Web App, sau đó chỉ định thư mục ứng dụng của bạn để triển khai nó
Khi được cảnh báo rằng điều này sẽ ghi đè lên triển khai trước đó, hãy chọn Triển khai để xác nhận
Điều này có lẽ tốn một vài phút; . Khi nó kết thúc, một nút có quyền truy cập vào trang web được cung cấp
Sử dụng nút và xác minh rằng thay đổi của bạn được phản ánh trên trang web
Xin chúc mừng, bạn đã sử dụng Python trong Mã VS để tạo triển khai một trang web được lưu trữ trên đám mây và trực tuyến trên internet
Giải phóng tài nguyên
Trong cổng Azure, xóa Nhóm tài nguyên để giải phóng tất cả các tài nguyên mà bạn đã tạo trong bài tập này