1. Tổng quan
Loạt lớp học lập trình này (hướng dẫn thực hành theo tiến độ riêng) nhằm giúp các nhà phát triển Google App Engine (Tiêu chuẩn) hiện đại hoá ứng dụng của họ bằng cách hướng dẫn họ thực hiện một loạt quy trình di chuyển. Sau khi hoàn thành mục tiêu này, người dùng có thể làm cho ứng dụng di động hơn bằng cách chia nhỏ các ứng dụng một cách rõ ràng thành Cloud Run, dịch vụ tương tự lưu trữ vùng chứa của Google Cloud cho App Engine, và các dịch vụ lưu trữ vùng chứa khác.
Hướng dẫn này chỉ cho bạn cách chứa các ứng dụng App Engine để triển khai cho dịch vụ được quản lý hoàn toàn trên Cloud Run bằng Docker, một nền tảng nổi tiếng trong ngành dùng để phát triển, vận chuyển và chạy ứng dụng trong vùng chứa. Đối với các nhà phát triển Python 2, hướng dẫn này sẽ BẮT ĐẦU với ứng dụng mẫu của Mô-đun Cloud NDB App Engine 2 trong khi các nhà phát triển Python 3 BẮT ĐẦU với mẫu Kho dữ liệu đám mây mô-đun 3.
Bạn sẽ tìm hiểu cách
- Vùng chứa ứng dụng bằng Docker
- Triển khai hình ảnh vùng chứa lên Cloud Run
Bạn cần có
- Một dự án Google Cloud Platform có:
- Kỹ năng Python cơ bản
- Kiến thức thực hành về các lệnh Linux phổ biến
- Kiến thức cơ bản về việc phát triển và triển khai ứng dụng App Engine
- Đề xuất: hoàn thành Lớp học lập trình mô-đun 2 hoặc Lớp học lập trình mô-đun 3
- Một ứng dụng App Engine hoạt động tốt sẵn sàng để đưa vào vùng chứa
- Python 2: Mẫu NDB đám mây mô-đun 2
- Python 3: Mẫu kho dữ liệu đám mây mô-đun 3
Khảo sát
Bạn sẽ sử dụng lớp học lập trình này như thế nào?
2. Thông tin khái quát
Các hệ thống PaaS như App Engine và Cloud Functions mang lại nhiều tiện ích cho đội ngũ và ứng dụng của bạn. Ví dụ: các nền tảng không máy chủ này cho phép SysAdmin/Devops tập trung vào việc xây dựng giải pháp. Ứng dụng của bạn có thể tự động mở rộng quy mô khi cần, giảm quy mô về 0 nhờ tính năng thanh toán trả tiền cho mỗi lần sử dụng giúp kiểm soát chi phí và sử dụng nhiều ngôn ngữ phát triển phổ biến.
Tuy nhiên, tính linh hoạt của vùng chứa cũng rất hấp dẫn, khả năng chọn bất kỳ ngôn ngữ, thư viện hay tệp nhị phân nào. Google Cloud Run mang đến cho người dùng những lợi ích tốt nhất của cả hai nền tảng, sự tiện lợi của mô hình không máy chủ cùng tính linh hoạt của vùng chứa.
Việc tìm hiểu cách sử dụng Cloud Run không thuộc phạm vi của lớp học lập trình này; có trong tài liệu về Cloud Run. Mục tiêu ở đây là giúp bạn biết cách chứa ứng dụng App Engine cho Cloud Run (hoặc các dịch vụ khác). Có một vài điều bạn nên biết trước khi tiếp tục, chủ yếu là trải nghiệm người dùng sẽ hơi khác một chút, ở mức thấp hơn một chút vì bạn sẽ không còn sử dụng và triển khai mã xử lý ứng dụng nữa.
Thay vào đó, bạn cần tìm hiểu một điều gì đó về vùng chứa như cách xây dựng và triển khai các vùng chứa đó. Bạn cũng có thể quyết định những gì bạn muốn đặt vào hình ảnh vùng chứa, bao gồm cả máy chủ web vì bạn sẽ không sử dụng máy chủ web của App Engine nữa. Nếu bạn không muốn đi theo đường dẫn này, việc giữ ứng dụng của bạn trên App Engine không phải là một lựa chọn xấu.
Trong hướng dẫn này, bạn sẽ tìm hiểu cách chứa ứng dụng của mình, thay thế tệp cấu hình App Engine bằng cấu hình vùng chứa, xác định nội dung nào đi vào vùng chứa, sau đó chỉ định cách khởi động ứng dụng — nhiều việc trong số này được App Engine xử lý tự động.
Quá trình di chuyển này bao gồm các bước sau:
- Thiết lập/Chuẩn bị
- Vùng chứa ứng dụng
- Thay thế các tệp cấu hình
- Sửa đổi tệp ứng dụng
3. Thiết lập/Chuẩn bị
Trước khi bắt đầu phần chính của hướng dẫn, hãy thiết lập dự án, lấy mã, sau đó triển khai ứng dụng cơ sở để biết rằng mình đã bắt đầu làm việc với mã nguồn.
1. Thiết lập dự án
Nếu đã hoàn thành các lớp học lập trình Mô-đun 2 hoặc Mô-đun 3, bạn nên sử dụng lại chính dự án (và mã nguồn). Ngoài ra, bạn có thể tạo một dự án hoàn toàn mới hoặc sử dụng lại một dự án hiện có khác. Hãy đảm bảo dự án này có một tài khoản thanh toán đang hoạt động và đã bật App Engine (ứng dụng).
2. Tải ứng dụng mẫu cơ sở
Một trong những điều kiện tiên quyết của lớp học lập trình này là phải có ứng dụng mẫu của Mô-đun 2 hoặc Mô-đun 3 hoạt động được. Nếu bạn chưa có tài khoản, hãy xem toàn bộ một trong hai hướng dẫn ở trên trước khi tiếp tục thực hiện các bước này. Hoặc nếu đã quen với nội dung của khoá học, bạn có thể bắt đầu bằng cách lấy mã Mô-đun 2 hoặc 3 dưới đây.
Cho dù bạn sử dụng mã của bạn hay của chúng tôi, mã Mô-đun 2 là nơi chúng tôi sẽ BẮT ĐẦU cho phiên bản Python 2 của hướng dẫn này, và tương tự, mã Mô-đun 3 cho Python 3. Lớp học lập trình của Mô-đun 4 này sẽ hướng dẫn bạn qua từng bước và tuỳ thuộc vào lựa chọn của bạn, bạn nên tạo đoạn mã giống với một trong các thư mục repo của Mô-đun 4 (Finish) khi hoàn tất.
- Python 2 (ứng dụng Cloud NDB)
- START: Mã mô-đun 2
- HOÀN TẤT: Mã mô-đun 4
- Python 3 (ứng dụng Cloud Datastore)
- START: Mã mô-đun 3
- HOÀN TẤT: Mã mô-đun 4
- Toàn bộ kho lưu trữ (để sao chép hoặc tải tệp ZIP xuống)
Thư mục của các tệp KHỞI ĐỘNG Mô-đun 2 Python 2 (của bạn hoặc của chúng tôi) sẽ có dạng như sau:
$ ls
README.md appengine_config.py requirements.txt
app.yaml main.py templates
Nếu đang sử dụng mã Mô-đun 2 (2.x) của riêng mình, thì bạn cũng sẽ có một thư mục lib
. Cả lib
và appengine_config.py
đều không được sử dụng cho Python 3, trong đó mã BẮT ĐẦU Mô-đun 3 (3.x) phải có dạng như sau:
$ ls
README.md main.py templates
app.yaml requirements.txt
3. (Triển khai lại) ứng dụng cơ sở
Các bước chuẩn bị còn lại để thực hiện ngay:
- Làm quen lại bằng công cụ dòng lệnh
gcloud
- Triển khai lại ứng dụng mẫu bằng
gcloud app deploy
- Xác nhận rằng ứng dụng chạy trên App Engine mà không gặp vấn đề nào
Sau khi thực thi thành công các bước đó, bạn đã sẵn sàng chứa thông tin trong vùng chứa.
4. Trong vùng chứa ứng dụng
Docker là nền tảng tiêu chuẩn cho việc sử dụng vùng chứa trong ngành công nghiệp hiện nay. Như đã đề cập trước đó, một thách thức khi sử dụng thuộc tính này là bạn phải nỗ lực tuyển chọn một Dockerfile
hiệu quả (tệp cấu hình giúp xác định cách tạo hình ảnh vùng chứa của bạn). Mặt khác, Buildpack (gói bản dựng) không cần nhiều công sức vì chức năng này dùng nội dung để xác định các phần phụ thuộc của ứng dụng, giúp vùng chứa Buildpacks mang lại hiệu quả cao nhất có thể cho ứng dụng của bạn.
Bạn đã đến đúng nơi nếu đã biết về vùng chứa, Docker và muốn tìm hiểu thêm về cách vùng chứa ứng dụng App Engine cho Cloud Run. Bạn cũng có thể tham gia Lớp học lập trình dành cho Mô-đun 5 (giống với lớp học này nhưng với Cloud Buildpacks) sau đó. Ứng dụng mẫu barebones của chúng tôi đủ nhẹ để tránh một số vấn đề về Dockerfile
nêu trên.
Các bước di chuyển bao gồm thay thế tệp cấu hình App Engine và chỉ định cách ứng dụng của bạn bắt đầu hoạt động. Dưới đây là bảng tóm tắt các tệp cấu hình có thể sử dụng cho từng loại nền tảng. So sánh cột App Engine với cột Docker (và các gói Buildpack không bắt buộc):
Nội dung mô tả | App Engine | Docker | Gói bản dựng |
Cấu hình chung |
|
| ( |
Thư viện của bên thứ ba |
|
|
|
Cấu hình của bên thứ ba |
| (không áp dụng) | (không áp dụng) |
Khởi động | (không áp dụng) hoặc |
|
|
Bỏ qua tệp |
|
|
|
Sau khi được lưu trữ trong vùng chứa, ứng dụng của bạn có thể được triển khai lên Cloud Run. Các lựa chọn khác về nền tảng vùng chứa Google Cloud bao gồm Compute Engine, GKE và Anthos.
Cấu hình chung
Di chuyển từ App Engine có nghĩa là thay thế app.yaml
bằng một Dockerfile
trình bày cách tạo và chạy vùng chứa. App Engine tự động khởi động ứng dụng của bạn, nhưng Cloud Run thì không. Đây là mục đích của lệnh Dockerfile
ENTRYPOINT
và CMD
. Tìm hiểu thêm về Dockerfile
trên trang tài liệu này trên Cloud Run, cũng như xem một ví dụ về Dockerfile
tạo gunicorn
.
Giải pháp thay thế cho việc sử dụng ENTRYPOINT
hoặc CMD
trong Dockerfile
là sử dụng Procfile
. Cuối cùng, .dockerignore
giúp lọc ra các tệp không phải ứng dụng để giảm kích thước vùng chứa. Sắp tới sẽ có thêm nhiều thông tin về những tính năng này!
Xoá app.yaml
và tạo Dockerfile
app.yaml
không được dùng trong vùng chứa, vì vậy, hãy xoá ngay. Tệp cấu hình vùng chứa là Dockerfile
và ứng dụng mẫu của chúng ta chỉ yêu cầu một tệp cấu hình tối thiểu. Tạo Dockerfile
bằng nội dung này, thay thế NNN
bằng 2
hoặc 3
, tuỳ thuộc vào phiên bản Python bạn đang sử dụng:
FROM python:NNN-slim
WORKDIR /app
COPY . .
RUN pip install -r requirements.txt
ENTRYPOINT ["python", "main.py"]
Hầu hết Dockerfile
chỉ định cách tạo vùng chứa ngoại trừ ENTRYPOINT
chỉ định cách bắt đầu vùng chứa, trong trường hợp này là gọi python main.py
để thực thi máy chủ phát triển Flask. Nếu bạn mới sử dụng Docker, lệnh FROM
sẽ chỉ ra hình ảnh cơ sở để bắt đầu và là "slim" đề cập đến phân phối Python tối thiểu. Tìm hiểu thêm trên trang hình ảnh Docker Python.
Tập hợp các lệnh ở giữa tạo thư mục đang hoạt động (/app
), các bản sao trong các tệp ứng dụng, sau đó chạy pip install
để đưa thư viện của bên thứ ba vào vùng chứa. WORKDIR
kết hợp các lệnh mkdir
và cd
của Linux với nhau; hãy đọc thêm về vấn đề này trong tài liệu về WORKDIR
. Các lệnh COPY
và RUN
sẽ dễ hiểu.
Thư viện của bên thứ ba
Tệp requirements.txt
có thể giữ nguyên; Bình chứa dữ liệu phải có ở đó cùng với thư viện ứng dụng Datastore (Cloud Datastore hoặc Cloud NDB). Nếu bạn muốn sử dụng một máy chủ HTTP khác tuân thủ WSGI như Gunicorn (phiên bản hiện tại tại thời điểm viết bài này là 20.0.4), hãy thêm gunicorn==20.0.4
vào requirements.txt
.
Cấu hình của bên thứ ba
Các nhà phát triển App Engine Python 2 biết rằng các thư viện của bên thứ ba sẽ được sao chép vào thư mục lib
, được tham chiếu trong requirements.txt
, được phân thành mục trong app.yaml
và được appengine_config.py
hỗ trợ. Các vùng chứa, chẳng hạn như các ứng dụng Python 3 App Engine, chỉ sử dụng requirements.txt
, vì vậy mọi nội dung khác đều có thể bị loại bỏ, nghĩa là nếu bạn có ứng dụng 2.x App Engine, hãy xoá appengine_config.py
và mọi thư mục lib
ngay bây giờ.
Khởi động
Người dùng Python 2 không khởi động máy chủ web của App Engine, nhưng bạn phải thực hiện việc này khi chuyển sang một vùng chứa. Bạn có thể thực hiện việc này bằng cách thêm lệnh CMD
hoặc ENTRYPOINT
vào Dockerfile
để chỉ định cách khởi động ứng dụng. Cách thực hiện tương tự như đối với người dùng Python 3 được mô tả ở bên dưới.
Người dùng Python 3 có thể chuyển đổi tệp app.yaml
để có lệnh entrypoint
thay vì lệnh script: auto
trong mục handlers
. Nếu bạn sử dụng entrypoint
trong Python 3 app.yaml
, mã sẽ có dạng như sau:
runtime: python38
entrypoint: python main.py
Lệnh entrypoint
hướng dẫn App Engine cách khởi động máy chủ của bạn. Bạn có thể di chuyển gần như trực tiếp vào Dockerfile
(hoặc Procfile
nếu sử dụng Gói bản dựng [xem Mô-đun 5] để chứa ứng dụng). Tóm tắt vị trí mà một lệnh điểm truy cập sẽ diễn ra giữa cả hai nền tảng:
- Docker: dòng trong
Dockerfile
:ENTRYPOINT ["python", "main.py"]
- Gói bản dựng: dòng trong
Procfile
:web: python main.py
Bạn có thể dùng máy chủ phát triển Flask cho mục đích kiểm thử, nhưng nếu sử dụng một máy chủ phát hành chính thức như gunicorn
cho ứng dụng, hãy nhớ trỏ lệnh ENTRYPOINT
hoặc CMD
vào máy chủ đó giống như trong mẫu Bắt đầu nhanh Cloud Run.
Bỏ qua tệp
Bạn nên tạo tệp .dockerignore
để cắt giảm kích thước của vùng chứa và không làm lộn xộn hình ảnh vùng chứa với các tệp thừa như sau:
*.md
*.pyc
*.pyo
.git/
.gitignore
__pycache__
Tệp ứng dụng
Tất cả ứng dụng Mô-đun 2 hoặc Mô-đun 3 đều hoàn toàn tương thích với Python 2-3, tức là không có thay đổi nào đối với các thành phần cốt lõi của main.py
; chúng ta sẽ chỉ thêm một vài dòng mã khởi động. Thêm một cặp dòng ở cuối main.py
để khởi động máy chủ phát triển vì Cloud Run yêu cầu phải mở cổng 8080 để có thể gọi ứng dụng của bạn:
if __name__ == '__main__':
import os
app.run(debug=True, threaded=True, host='0.0.0.0',
port=int(os.environ.get('PORT', 8080)))
5. Xây dựng và triển khai
Sau khi hoàn tất quá trình cập nhật tệp nguồn và cấu hình Docker, bạn đã sẵn sàng chạy ứng dụng trên Cloud Run. Trước đó, hãy thảo luận ngắn gọn về services.
Dịch vụ so với Ứng dụng
Mặc dù App Engine chủ yếu được tạo ra để lưu trữ ứng dụng, nhưng đây cũng là nền tảng để lưu trữ các dịch vụ web hoặc ứng dụng tạo thành từ một tập hợp các dịch vụ vi mô. Trong Cloud Run, mọi thứ đều là dịch vụ, dù đó là dịch vụ thực tế hay ứng dụng có giao diện web. Vì vậy, hãy coi việc sử dụng dịch vụ là triển khai dịch vụ thay vì ứng dụng.
Trừ phi ứng dụng App Engine của bạn được tạo thành từ nhiều dịch vụ, bạn thực sự không phải thực hiện bất kỳ cách đặt tên nào khi triển khai ứng dụng của mình. Điều này sẽ thay đổi với Cloud Run, vì vậy, bạn sẽ cần phải đặt tên dịch vụ. Trong khi đó, miền appspot.com
của App Engine có mã dự án riêng, ví dụ: https://PROJECT_ID.appspot.com
và có thể là chữ viết tắt của mã khu vực, ví dụ: http://PROJECT_ID.REGION_ID.r.appspot.com
.
Tuy nhiên, miền của dịch vụ Cloud Run có tên dịch vụ, chữ viết tắt mã khu vực và giá trị băm, chứ không phải mã dự án, ví dụ: https://SVC_NAME-HASH-REG_ABBR.a.run.app
. Nói tóm lại, hãy bắt đầu nghĩ đến tên dịch vụ!
Triển khai dịch vụ
Thực thi lệnh bên dưới để tạo hình ảnh vùng chứa của bạn và triển khai lên Cloud Run. Khi được nhắc, hãy chọn khu vực của bạn và cho phép kết nối chưa được xác thực để kiểm thử dễ dàng hơn và chọn khu vực của bạn cho phù hợp, trong đó SVC_NAME
là tên dịch vụ bạn đang triển khai.
$ gcloud beta run deploy SVC_NAME --source . Please choose a target platform: [1] Cloud Run (fully managed) [2] Cloud Run for Anthos deployed on Google Cloud [3] Cloud Run for Anthos deployed on VMware [4] cancel Please enter your numeric choice: 1 To specify the platform yourself, pass `--platform managed`. Or, to make this the default target platform, run `gcloud config set run/platform managed`. Please specify a region: [1] asia-east1 [2] asia-east2 [3] asia-northeast1 [4] asia-northeast2 [5] asia-northeast3 [6] asia-south1 [7] asia-southeast1 [8] asia-southeast2 [9] australia-southeast1 [10] europe-north1 [11] europe-west1 [12] europe-west2 [13] europe-west3 [14] europe-west4 [15] europe-west6 [16] northamerica-northeast1 [17] southamerica-east1 [18] us-central1 [19] us-east1 [20] us-east4 [21] us-west1 [22] us-west2 [23] us-west3 [24] us-west4 [25] cancel Please enter your numeric choice: <select your numeric region choice> To make this the default region, run `gcloud config set run/region REGION`. Allow unauthenticated invocations to [SVC_NAME] (y/N)? y Building using Dockerfile and deploying container to Cloud Run service [SVC_NAME] in project [PROJECT_ID] region [REGION] ✓ Building and deploying new service... Done. ✓ Uploading sources... ✓ Building Container... Logs are available at [https://console.cloud.google.com/cloud-build/builds/BUILD-HASH?project=PROJECT_NUM]. ✓ Creating Revision... Deploying Revision. ✓ Routing traffic... ✓ Setting IAM Policy... Done. Service [SVC_NAME] revision [SVC_NAME-00001-vos] has been deployed and is serving 100 percent of traffic. Service URL: https://SVC_NAME-HASH-REG_ABBR.a.run.app
Truy cập vào URL được chỉ định bằng trình duyệt của bạn để xác nhận rằng quá trình triển khai đã thành công!
Như lệnh gcloud
cho biết, người dùng có thể đặt nhiều chế độ cài đặt mặc định để giảm đầu ra và tính tương tác như đã trình bày ở trên. Ví dụ: để tránh tất cả các lượt tương tác, bạn có thể dùng lệnh triển khai một dòng sau đây:
$ gcloud beta run deploy SVC_NAME --source . --platform managed --region REGION --allow-unauthenticated
Nếu bạn sử dụng dịch vụ này, hãy nhớ chọn cùng một tên dịch vụ SVC_NAME
và tên REGION
mong muốn, chứ không phải lựa chọn trình đơn được lập chỉ mục như chúng ta đã làm tương tác ở trên.
6. Tóm tắt/Dọn dẹp
Xác nhận rằng ứng dụng hoạt động trên Cloud Run giống như trên App Engine. Nếu bạn đã xem loạt video này mà không thực hiện bất kỳ lớp học lập trình nào trước đó thì ứng dụng sẽ không thay đổi; trang này sẽ ghi lại tất cả lượt truy cập vào trang web chính (/
) và có dạng như sau khi bạn đã truy cập đủ số lần vào trang web:
Mã của bạn bây giờ phải khớp với nội dung trong thư mục repo Mô-đun 4, cho dù đó là 2.x hay 3.x. Chúc mừng bạn đã hoàn thành lớp học lập trình Học phần 4 này.
Không bắt buộc: Dọn dẹp
Còn việc dọn dẹp để tránh bị tính phí cho đến khi bạn sẵn sàng chuyển sang lớp học lập trình di chuyển tiếp theo thì sao? Vì bạn đang dùng một sản phẩm khác, hãy nhớ xem hướng dẫn về giá của Cloud Run.
Không bắt buộc: Tắt dịch vụ
Nếu bạn chưa sẵn sàng chuyển đến hướng dẫn tiếp theo, hãy tắt dịch vụ của bạn để tránh phát sinh thêm phí. Khi đã sẵn sàng chuyển sang lớp học lập trình tiếp theo, bạn có thể bật lại lớp học này. Mặc dù bị vô hiệu hoá, ứng dụng của bạn sẽ không nhận được bất kỳ lưu lượng truy cập nào để bị tính phí. Tuy nhiên, một điều khác bạn có thể bị tính phí là mức sử dụng Datastore nếu vượt quá hạn mức miễn phí, vì vậy, hãy xoá đủ để nằm trong giới hạn đó.
Mặt khác, nếu không định tiếp tục quá trình di chuyển và muốn xoá hoàn toàn mọi thứ, thì bạn có thể xoá dịch vụ hoặc tắt hoàn toàn dự án.
Các bước tiếp theo
Xin chúc mừng, bạn đã sắp xếp ứng dụng của mình vào vùng chứa. Bài học này kết thúc hướng dẫn này! Từ đây, bước tiếp theo là tìm hiểu cách thực hiện tương tự với Cloud Buildpacks trong lớp học lập trình Mô-đun 5 (đường liên kết bên dưới) hoặc thực hiện một quá trình di chuyển khác trên App Engine:
- Di chuyển sang Python 3 nếu bạn chưa di chuyển. Ứng dụng mẫu đã tương thích với phiên bản 2.x và 3.x, vì vậy, thay đổi duy nhất là đối với người dùng Docker cập nhật
Dockerfile
để sử dụng hình ảnh Python 3. - Học phần 5: Di chuyển sang Cloud Run bằng các gói bản dựng trên đám mây
- Trong vùng chứa của ứng dụng để chạy trên Cloud Run bằng Cloud Buildpacks
- Bạn không cần phải biết gì về Docker, vùng chứa hoặc
Dockerfile
- Yêu cầu bạn phải di chuyển ứng dụng của mình sang Python 3
- Mô-đun 7: Hàng đợi tác vụ đẩy của App Engine (bắt buộc nếu bạn sử dụng Hàng đợi tác vụ [push])
- Thêm các tác vụ đẩy
taskqueue
của App Engine vào ứng dụng Mô-đun 1 - Giúp người dùng chuẩn bị để di chuyển sang Cloud Tasks trong Mô-đun 8
- Thêm các tác vụ đẩy
- Học phần 3:
- Hiện đại hoá quyền truy cập vào Datastore từ Cloud NDB thành Cloud Datastore
- Đây là thư viện dùng cho các ứng dụng Python 3 App Engine và các ứng dụng không phải App Engine
- Học phần 6: Di chuyển sang Cloud Firestore
- Di chuyển sang Cloud Firestore để sử dụng các tính năng của Firebase
- Mặc dù Cloud Firestore hỗ trợ Python 2, nhưng lớp học lập trình này chỉ dùng được với Python 3.
7. Tài nguyên khác
Vấn đề/phản hồi trong lớp học lập trình mô-đun di chuyển App Engine
Nếu bạn gặp vấn đề với lớp học lập trình này, vui lòng tìm vấn đề của bạn trước khi gửi. Đường liên kết để tìm kiếm và báo cáo vấn đề mới:
- Công cụ theo dõi lỗi cho lớp học lập trình di chuyển App Engine
Tài nguyên di chuyển
Bạn có thể tìm thấy các đường liên kết đến các thư mục repo cho Mô-đun 2 và 3 (START) và Mô-đun 4 (complete) trong bảng bên dưới. Bạn cũng có thể truy cập vào các tệp này qua kho lưu trữ dành cho mọi quá trình di chuyển trong lớp học lập trình App Engine. Tại đây, bạn có thể sao chép hoặc tải tệp ZIP xuống.
Codelab | Python 2 | Python 3 |
(mã) | ||
(mã) | ||
Học phần 4 |
Tài nguyên của App Engine và Cloud Run
Dưới đây là các thông tin khác liên quan đến việc di chuyển cụ thể này:
- Vùng chứa
- Chung