Journey of application deployment on GCP
curl http://localhost:8000
curl http://localhost:8001/chain
python3 -m venv .venv
source .venv/bin/activate
pip install -r requirements.txt
python main.py
deactivate
docker build -t python-fastapi .
docker run -d -p 8000:8000 --name fastapi python-fastapi
docker rm -f fastapi
docker run -d -p 8003:8000 --name app-c python-fastapi
docker run -d -p 8002:8000 --name app-b python-fastapi
docker run -d -p 8001:8000 --name app-a --link app-b:app-b --link app-c:app-c python-fastapi
docker rm -f app-a app-b app-c
docker compose up --build
docker compose down
gcloud run deploy --source . --region asia-southeast1 --port 8000 app-a --allow-unauthenticated --quiet
05 Update Code on Cloud Run
gcloud run deploy --source . --region asia-southeast1 --port 8000 app-a --allow-unauthenticated
Open Duet AI
Edit main.py
and put the following comment
# Function to plus number by get endpoint /plus/i/j to plus i and j number together
Open Duet AI
Please write unittest with pytest on test_main.py file
Fix by put from fastapi.testclient import TestClient
and use TestClient(app)
on response accordingly
source ../01/.venv/bin/activate
pip install -r requirements-dev.txt
pytest
# Remove failed test
deactivate
08 Deploy from source code
gcloud source repos create python-fastapi
# Go to SET UP CONTINUOUS DEPLOYMENT in Cloud Run
# Change Code to v3
git remote add google ssh://[YOUR EMAIL]@source.developers.google.com:2022/p/{YOUR GCP PROJECT}/r/python-fastapi
git push --all google
09 CI/CD with Cloud Build
gcloud deploy apply --file clouddeploy.yaml --region asia-southeast1
# Edit Cloud Build trigger from 10 directory
# Change to v5
gcloud beta run domain-mappings --region asia-southeast1 create \
--service=app-a-dev --domain=app-a.dev.demo.opsta.dev
gcloud beta run domain-mappings --region asia-southeast1 create \
--service=app-b-dev --domain=app-b.dev.demo.opsta.dev
gcloud beta run domain-mappings --region asia-southeast1 create \
--service=app-c-dev --domain=app-c.dev.demo.opsta.dev
gcloud beta run domain-mappings --region asia-southeast1 create \
--service=app-a-prd --domain=app-a.demo.opsta.dev
gcloud beta run domain-mappings --region asia-southeast1 create \
--service=app-b-prd --domain=app-b.demo.opsta.dev
gcloud beta run domain-mappings --region asia-southeast1 create \
--service=app-c-prd --domain=app-c.demo.opsta.dev
# gcloud deploy releases create fastapi-release-$(date +"%Y%m%d%H%M") \
# --delivery-pipeline fastapi --skaffold-file skaffold.yaml --region asia-southeast1 \
# --images 'fastapi=asia-southeast1-docker.pkg.dev/{YOUR GCP PROJECT}/devfest/fastapi@sha256:87ded8770178d25b286ef74f332fb2574300ab83a97bf672940bbede3dae6de1'
k6 run k6-load-testing.js