GCP如果是乾淨環境或是qwiklab會出現類似以下內容於CLI
執行步驟如下
```bash
Welcome to Cloud Shell! Type "help" to get started.
Your Cloud Platform project in this session is set to qwiklabs-gcp-01-9e010417e853.
Use “gcloud config set project [PROJECT_ID]” to change to a different project.
student_00_75195726d0cd@cloudshell:~ (qwiklabs-gcp-01-9e010417e853)$ gcloud auth list
Credentialed Accounts
ACTIVE: *
ACCOUNT: student-00-75195726d0cd@qwiklabs.net
To set the active account, run:
$ gcloud config set account `ACCOUNT`
student_00_75195726d0cd@cloudshell:~ (qwiklabs-gcp-01-9e010417e853)$ gcloud config list project
[core]
project = qwiklabs-gcp-01-9e010417e853
Your active configuration is: [cloudshell-31071]
student_00_75195726d0cd@cloudshell:~ (qwiklabs-gcp-01-9e010417e853)$ gcloud services enable run.googleapis.com
Operation "operations/acf.p2-57217125899-3dd872cd-af01-4cea-bdca-c59bedf879db" finished successfully.
student_00_75195726d0cd@cloudshell:~ (qwiklabs-gcp-01-9e010417e853)$ LOCATION=us-west1
student_00_75195726d0cd@cloudshell:~ (qwiklabs-gcp-01-9e010417e853)$ gcloud config set compute/region $LOCATION
Updated property [compute/region].
student_00_75195726d0cd@cloudshell:~ (qwiklabs-gcp-01-9e010417e853)$ echo $LOCATION
us-west1
student_00_75195726d0cd@cloudshell:~ (qwiklabs-gcp-01-9e010417e853)$ gcloud run deploy store-service \
--image gcr.io/qwiklabs-resources/gsp724-store-service \
--region $LOCATION \
--allow-unauthenticated
Deploying container to Cloud Run service [store-service] in project [qwiklabs-gcp-01-9e010417e853] region [us-west1]
OK Deploying new service... Done.
OK Creating Revision...
OK Routing traffic...
OK Setting IAM Policy...
Done.
Service [store-service] revision [store-service-00001-jvc] has been deployed and is serving 100 percent of traffic.
Service URL: https://store-service-7zhtweufua-uw.a.run.app
student_00_75195726d0cd@cloudshell:~ (qwiklabs-gcp-01-9e010417e853)$ gcloud run deploy order-service \
--image gcr.io/qwiklabs-resources/gsp724-order-service \
--region $LOCATION \
--no-allow-unauthenticated
Deploying container to Cloud Run service [order-service] in project [qwiklabs-gcp-01-9e010417e853] region [us-west1]
OK Deploying new service... Done.
OK Creating Revision...
OK Routing traffic...
Done.
Service [order-service] revision [order-service-00001-z9x] has been deployed and is serving 100 percent of traffic.
Service URL: https://order-service-7zhtweufua-uw.a.run.app
student_00_75195726d0cd@cloudshell:~ (qwiklabs-gcp-01-9e010417e853)$ gcloud pubsub topics create ORDER_PLACED
Created topic [projects/qwiklabs-gcp-01-9e010417e853/topics/ORDER_PLACED].
student_00_75195726d0cd@cloudshell:~ (qwiklabs-gcp-01-9e010417e853)$ gcloud iam service-accounts create pubsub-cloud-run-invoker \
Created service account [pubsub-cloud-run-invoker].
student_00_75195726d0cd@cloudshell:~ (qwiklabs-gcp-01-9e010417e853)$ gcloud iam service-accounts list --filter="Order Initiator"
DISPLAY NAME: Order Initiator
EMAIL: pubsub-cloud-run-invoker@qwiklabs-gcp-01-9e010417e853.iam.gserviceaccount.com
DISABLED: False
student_00_75195726d0cd@cloudshell:~ (qwiklabs-gcp-01-9e010417e853)$ gcloud pubsub topics create ORDER_PLACED
ERROR: Failed to create topic [projects/qwiklabs-gcp-01-9e010417e853/topics/ORDER_PLACED]: Resource already exists in the project (resource=ORDER_PLACED).
ERROR: (gcloud.pubsub.topics.create) Failed to create the following: [ORDER_PLACED].
student_00_75195726d0cd@cloudshell:~ (qwiklabs-gcp-01-9e010417e853)$ gcloud iam service-accounts list --filter="Order Initiator"
DISPLAY NAME: Order Initiator
EMAIL: pubsub-cloud-run-invoker@qwiklabs-gcp-01-9e010417e853.iam.gserviceaccount.com
DISABLED: False
student_00_75195726d0cd@cloudshell:~ (qwiklabs-gcp-01-9e010417e853)$ gcloud iam service-accounts create pubsub-cloud-run-invoker \
--display-name "Order Initiator"
ERROR: (gcloud.iam.service-accounts.create) Resource in projects [qwiklabs-gcp-01-9e010417e853] is the subject of a conflict: Service account pubsub-cloud-run-invoker already exists within project projects/qwiklabs-gcp-01-9e010417e853.
- '@type': type.googleapis.com/google.rpc.ResourceInfo
resourceName: projects/qwiklabs-gcp-01-9e010417e853/serviceAccounts/pubsub-cloud-run-invoker@qwiklabs-gcp-01-9e010417e853.iam.gserviceaccount.com
student_00_75195726d0cd@cloudshell:~ (qwiklabs-gcp-01-9e010417e853)$ gcloud iam service-accounts list
DISPLAY NAME: Compute Engine default service account
EMAIL: 57217125899-compute@developer.gserviceaccount.com
DISABLED: False
DISPLAY NAME: Order Initiator
EMAIL: pubsub-cloud-run-invoker@qwiklabs-gcp-01-9e010417e853.iam.gserviceaccount.com
DISABLED: False
DISPLAY NAME: Qwiklabs User Service Account
EMAIL: qwiklabs-gcp-01-9e010417e853@qwiklabs-gcp-01-9e010417e853.iam.gserviceaccount.com
DISABLED: False
student_00_75195726d0cd@cloudshell:~ (qwiklabs-gcp-01-9e010417e853)$ gcloud run services add-iam-policy-binding order-service --region $LOCATION \
--member=serviceAccount:pubsub-cloud-run-invoker@$GOOGLE_CLOUD_PROJECT.iam.gserviceaccount.com \
--role=roles/run.invoker --platform managed
Updated IAM policy for service [order-service].
bindings:
- members:
- serviceAccount:pubsub-cloud-run-invoker@qwiklabs-gcp-01-9e010417e853.iam.gserviceaccount.com
role: roles/run.invoker
etag: BwYLxglnXlQ=
version: 1
student_00_75195726d0cd@cloudshell:~ (qwiklabs-gcp-01-9e010417e853)$ gcloud pubsub
lite-operations lite-reservations lite-subscriptions lite-topics schemas snapshots subscriptions topics
student_00_75195726d0cd@cloudshell:~ (qwiklabs-gcp-01-9e010417e853)$ gcloud pubsub ^C
student_00_75195726d0cd@cloudshell:~ (qwiklabs-gcp-01-9e010417e853)$ PROJECT_NUMBER=$(gcloud projects list \
--filter="qwiklabs-gcp" \
--format='value(PROJECT_NUMBER)')
student_00_75195726d0cd@cloudshell:~ (qwiklabs-gcp-01-9e010417e853)$ gcloud projects add-iam-policy-binding $GOOGLE_CLOUD_PROJECT \
--member=serviceAccount:service-$PROJECT_NUMBER@gcp-sa-pubsub.iam.gserviceaccount.com \
--role=roles/iam.serviceAccountTokenCreator
Updated IAM policy for project [qwiklabs-gcp-01-9e010417e853].
bindings:
- members:
- serviceAccount:qwiklabs-gcp-01-9e010417e853@qwiklabs-gcp-01-9e010417e853.iam.gserviceaccount.com
role: roles/bigquery.admin
- members:
- serviceAccount:57217125899@cloudbuild.gserviceaccount.com
{
role: roles/cloudbuild.builds.builder
- members:
- serviceAccount:service-57217125899@gcp-sa-cloudbuild.iam.gserviceaccount.com
role: roles/cloudbuild.serviceAgent
- members:
- serviceAccount:service-57217125899@compute-system.iam.gserviceaccount.com
role: roles/compute.serviceAgent
- members:
- serviceAccount:service-57217125899@container-engine-robot.iam.gserviceaccount.com
role: roles/container.serviceAgent
- members:
- serviceAccount:service-57217125899@containerregistry.iam.gserviceaccount.com
role: roles/containerregistry.ServiceAgent
- members:
- serviceAccount:57217125899-compute@developer.gserviceaccount.com
- serviceAccount:57217125899@cloudservices.gserviceaccount.com
role: roles/editor
- members:
- serviceAccount:service-57217125899@gcp-sa-pubsub.iam.gserviceaccount.com
role: roles/iam.serviceAccountTokenCreator
- members:
- serviceAccount:admiral@qwiklabs-services-prod.iam.gserviceaccount.com
- serviceAccount:qwiklabs-gcp-01-9e010417e853@qwiklabs-gcp-01-9e010417e853.iam.gserviceaccount.com
- user:student-00-75195726d0cd@qwiklabs.net
role: roles/owner
- members:
- serviceAccount:service-57217125899@gcp-sa-pubsub.iam.gserviceaccount.com
role: roles/pubsub.serviceAgent
- members:
- serviceAccount:service-57217125899@serverless-robot-prod.iam.gserviceaccount.com
role: roles/run.serviceAgent
- members:
- serviceAccount:qwiklabs-gcp-01-9e010417e853@qwiklabs-gcp-01-9e010417e853.iam.gserviceaccount.com
role: roles/storage.admin
- members:
- user:student-00-75195726d0cd@qwiklabs.net
role: roles/viewer
etag: BwYLxg0bW4o=
version: 1
student_00_75195726d0cd@cloudshell:~ (qwiklabs-gcp-01-9e010417e853)$ ORDER_SERVICE_URL=$(gcloud run services describe order-service \
--region $LOCATION \
--format="value(status.address.url)")
student_00_75195726d0cd@cloudshell:~ (qwiklabs-gcp-01-9e010417e853)$ ^C
student_00_75195726d0cd@cloudshell:~ (qwiklabs-gcp-01-9e010417e853)$ echo $ORDER_SERVICE_URL
https://order-service-7zhtweufua-uw.a.run.app
student_00_75195726d0cd@cloudshell:~ (qwiklabs-gcp-01-9e010417e853)$ gcloud pubsub subscriptions create order-service-sub \
--topic ORDER_PLACED \
--push-endpoint=$ORDER_SERVICE_URL \
--push-auth-service-account=pubsub-cloud-run-invoker@$GOOGLE_CLOUD_PROJECT.iam.gserviceaccount.com
Created subscription [projects/qwiklabs-gcp-01-9e010417e853/subscriptions/order-service-sub].
student_00_75195726d0cd@cloudshell:~ (qwiklabs-gcp-01-9e010417e853)$ vi test.json
student_00_75195726d0cd@cloudshell:~ (qwiklabs-gcp-01-9e010417e853)$ vim test.json
student_00_75195726d0cd@cloudshell:~ (qwiklabs-gcp-01-9e010417e853)$ STORE_SERVICE_URL=$(gcloud run services describe store-service \
--region $LOCATION \
--format="value(status.address.url)")
student_00_75195726d0cd@cloudshell:~ (qwiklabs-gcp-01-9e010417e853)$ curl -X POST -H "Content-Type: application/json" -d @test.json $STORE_SERVICE_URL
student_00_75195726d0cd@cloudshell:~ (qwiklabs-gcp-01-9e010417e853)$
```


test.json
```bash=
{
"billing_address": {
"name": "Kylie Scull",
"address": "6471 Front Street",
"city": "Mountain View",
"state_province": "CA",
"postal_code": "94043",
"country": "US"
},
"shipping_address": {
"name": "Kylie Scull",
"address": "9902 Cambridge Grove",
"city": "Martinville",
"state_province": "BC",
"postal_code": "V1A",
"country": "Canada"
},
"items": [
{
"id": "RW134",
"quantity": 1,
"sub-total": 12.95
},
{
"id": "IB541",
"quantity": 2,
"sub-total": 24.5
}
]
}
```
```bash=
# 使用基於 PyTorch 的映像,支援 CUDA 11.1、CuDNN 8,並提供開發工具
FROM pytorch/pytorch:1.9.1-cuda11.1-cudnn8-devel
# 移除 CUDA 相關的 apt 存儲庫,並更新 NVIDIA 的 GPG 金鑰
RUN rm /etc/apt/sources.list.d/cuda.list
RUN rm /etc/apt/sources.list.d/nvidia-ml.list
RUN apt-key del 7fa2af80
RUN apt-key adv --fetch-keys https://developer.download.nvidia.com/compute/cuda/repos/ubuntu2004/x86_64/3bf863cc.pub
RUN apt-key adv --fetch-keys https://developer.download.nvidia.com/compute/machine-learning/repos/ubuntu2004/x86_64/7fa2af80.pub
# 設定工作目錄
WORKDIR /workplace
# 添加模型資料夾
ADD model /model
# 設定環境變數
ENV UAV_SERVICE=/workplace/5G-AI-rescue-proj-api
# 設定非交互式 Debian Frontend 和時區
ARG DEBIAN_FRONTEND=noninteractive
ENV TZ=Asia/Taipei
# 安裝相關套件
RUN apt-get update && apt-get install -y \
build-essential \
pkg-config \
autoconf \
automake \
libtool \
cmake \
git \
vim \
wget
# 安裝 Python 開發相關套件和必要工具
RUN apt-get -y update && apt-get -y install \
python3-dev \
python3-pip \
python3-numpy
# 安裝額外的相依性
RUN apt-get -y install libglib2.0-0 libsm6 libxext6 libxrender-dev libgl1
# 升級 pip,並安裝 Python 套件
RUN pip3 install --upgrade pip
RUN pip3 install pandas opencv-python matplotlib pillow paho-mqtt psycopg2-binary jupyter pyyaml watchdog
# 下載 Detectron2 並安裝
RUN \
git clone https://github.com/facebookresearch/detectron2.git && \
cd detectron2 && \
git checkout 5aeb252b194b93dc2879b4ac34bc51a31b5aee13 && \
cd .. && \
python -m pip install -e detectron2
```