Before you start, make sure you have installed or set up the following:
- Python 3.9 (or newer)
- Git
- Google Cloud SDK
- A Google Cloud account with billing enabled
git clone https://github.com/SH32x/WebAPI- Go to the Google Cloud Console
- Create a new project, note your 'project id'
gcloud init
gcloud config set project 'project id'gcloud services enable cloudbuild.googleapis.com
gcloud services enable secretmanager.googleapis.com
gcloud services enable sqladmin.googleapis.com
gcloud services enable cloudresourcemanager.googleapis.com- Go to the Cloud SQL Instances and click 'Create Instance'
- Choose 'MySQL', set a password for the 'root' user.
- Select DB version and plans (I chose Enterprise)
In place of 'instance-name' add your own instance's name
gcloud sql databases create db-name --instance=instance-nameAgain, replace placeholders with your own values.
gcloud sql users create db-user \
--instance=instance-name \
--password=db-passwordThe names of the secrets should correspond to 'secret_key', 'db-user', etc., if you wish to use different names make sure to change the references in 'config.py' as well.
Make sure that "db-user-value", "db-password-value, and "db-name-value" correspond to the actual name and credentials of your cloud database.
# Create secrets
gcloud secrets create secret_key --replication-policy="automatic"
gcloud secrets create db-user --replication-policy="automatic"
gcloud secrets create db-password --replication-policy="automatic"
gcloud secrets create db-name --replication-policy="automatic"
# Add secret values
echo -n "secret-key-value" | gcloud secrets versions add secret_key --data-file=-
echo -n "db-user-value" | gcloud secrets versions add db-user --data-file=-
echo -n "db-password-value" | gcloud secrets versions add db-password --data-file=-
echo -n "db-name-value" | gcloud secrets versions add db-name --data-file=-gcloud projects add-iam-policy-binding 'project-id-value' \
--member="serviceAccount:project-id-value@appspot.gserviceaccount.com" \
--role="roles/secretmanager.secretAccessor"Replace the following values in config.py:
project_id="webapi-439022"with your project ID- In the SQLALCHEMY_DATABASE_URI, replace the socket name with your instance's socket name:
?unix_socket=/cloudsql/<your-project-id>:<region>:instance-name
python -m venv venv
source venv/bin/activate # On Windows: .\venv\Scripts\activate
pip install -r requirements.txtgcloud app deploygcloud app browse