# GDSC GCP <br> CloudRun 分享 --- ![](https://i.imgur.com/yQN5ydX.png) Note: * IaaS => GCE * CaaS => GKE,Cloud Run * PaaS => APP Engine * Faas => Cloud Function --- ![](https://i.imgur.com/yTfE7yJ.png) Note: Serverless => 不需要管理Server,服務都是由事件觸發 收費、用途 --- ![](https://i.imgur.com/vMmoCZp.png) Note: 可以透過docker 處理好環境 15->60 根據需求彈性擴增 =========== 使用量、備份 透過https,gRPC,Webhook 設定安全性連線 --- ## 如何部屬 1. 持續透過原始碼存放區部署新的修訂版本 * Github 程式碼代管 -> Github Action 自動測試 * CloudRun 根據Git的推送紀錄進行部屬 2. 直接部屬 1. Google Cloud CLI 2. Cloud Shell (有類似VSCode的編輯頁面) --- ``` |-- Dockerfile docker的建構檔案 |-- app.py backend by flask |-- testFlask.py 對flask做unittest |-- requirements.txt python會用到的相依套件 |-- .github |-- workflows |--main.yml github Action 流程設定 ``` --- app.py ```python from flask import Flask app = Flask(__name__) @app.route("/") def hello(): return "Hello, Cloud Run!" ``` --- testFlask.py ```python class SettingBase(TestCase): def create_app(self): app.config['TESTING'] = True return app class TestWelcomePage(SettingBase): def testMainPage(self): response = self.client.get('/') self.assertEqual(response.data,b"Hello, Cloud Run!") if __name__ == '__main__': unittest.main() ``` --- Dockerfile ```dockerfile FROM python:3 # 設定基礎image WORKDIR /app # 設定工作目錄 COPY . . # 把檔案複製到容器裡面 RUN pip install --no-cache-dir -r requirements.txt # 在容器中執行這個指令 CMD [ "flask", "run" , "--host","0.0.0.0" ,"--port","8080"] # 每次啟動docker時的命令 Cloud 一定要run8080 port ``` --- main.yml ```yml= name: Flask2Docker2Github2CloudRun on: #觸發條件 push: branches: - main jobs: test: runs-on: ubuntu-latest #測試環境 steps: - name: Checkout uses: actions/checkout@v2.5.0 - name: Setup Python uses: actions/setup-python@v4.3.0 with: python-version: 3.10.0 - name: Install Dependencies run: | python -m pip install --upgrade pip pip install -r ./requirements.txt pip install pytest - name: Test with pytest run: | pytest ./testFlask.py ``` --- ![](https://i.imgur.com/mzABbNR.png) --- ![](https://i.imgur.com/4cIV1Eg.png) --- ![](https://i.imgur.com/h2GHxm1.png) --- ![](https://i.imgur.com/F8ncO0O.png) --- ![](https://i.imgur.com/URAPmX9.png) --- ![](https://i.imgur.com/CPdoAVL.png) --- ![](https://i.imgur.com/WSdWJ23.png) --- ![](https://i.imgur.com/oee84Ox.png) --- ![](https://i.imgur.com/UPnUE0q.png) --- ## 經驗分享 - github-repository 命名 因為gcp這個平台都是用小寫,- 如果repository用駝峰法命名(大寫)會部屬失敗 解法1: 去觸發條件直接定義小寫的REPO_NAME 解法2: 砍掉重練 --- - GCP CSS掛掉(樣式消失) 慢慢去測試哪一個擴充套件衝突 MetaStream ![](https://i.imgur.com/nbSzEaG.png) ---
{"metaMigratedAt":"2023-06-17T12:27:33.630Z","metaMigratedFrom":"YAML","title":"GDSC GCP CloudRun 分享","breaks":true,"slideOptions":"{\"spotlight\":{\"enabled\":true}}","contributors":"[{\"id\":\"34b9be90-7dcd-461a-926b-6dc0204497c4\",\"add\":3133,\"del\":226}]"}
    712 views