diff --git a/.env.example b/.env.example index e7c4dec..c1519e5 100644 --- a/.env.example +++ b/.env.example @@ -7,12 +7,6 @@ LOG_LEVEL=INFO CORS_ORIGINS=* # Database Settings -# Choose database type: "mongodb" or "firestore" -DATABASE_TYPE=mongodb - -# MongoDB Settings (used when DATABASE_TYPE=mongodb) -DATABASE_URI=mongodb://localhost:27017 -DATABASE_NAME=imagedb # Google Cloud Firestore Settings (used when DATABASE_TYPE=firestore) # Path to service account credentials file (optional, uses application default credentials if not set) diff --git a/README.md b/README.md index 3dfc01c..8419573 100644 --- a/README.md +++ b/README.md @@ -82,7 +82,6 @@ sereact/ 4. Create a `.env` file with the following environment variables: ``` # Firestore - DATABASE_NAME=imagedb FIRESTORE_PROJECT_ID=your-gcp-project-id FIRESTORE_CREDENTIALS_FILE=path/to/firestore-credentials.json diff --git a/deployment/README.md b/deployment/README.md index 3dde3a0..2109beb 100644 --- a/deployment/README.md +++ b/deployment/README.md @@ -53,12 +53,14 @@ Sensitive data should be managed using Google Secret Manager: ```bash # Create a secret -gcloud secrets create sereact-db-uri --replication-policy="automatic" +gcloud secrets create sereact-api-key-secret --replication-policy="automatic" +gcloud secrets create sereact-vector-db-key --replication-policy="automatic" # Add a secret version -echo -n "your-mongodb-uri" | gcloud secrets versions add sereact-db-uri --data-file=- +echo -n "your-api-key-secret" | gcloud secrets versions add sereact-api-key-secret --data-file=- +echo -n "your-vector-db-key" | gcloud secrets versions add sereact-vector-db-key --data-file=- -# Update Cloud Run service to use the secret +# Update Cloud Run service to use the secrets gcloud run services update sereact \ - --update-secrets=DATABASE_URI=sereact-db-uri:latest + --update-secrets=API_KEY_SECRET=sereact-api-key-secret:latest,VECTOR_DB_API_KEY=sereact-vector-db-key:latest ``` \ No newline at end of file diff --git a/deployment/cloud-run/service.yaml b/deployment/cloud-run/service.yaml index 51a7c28..947752e 100644 --- a/deployment/cloud-run/service.yaml +++ b/deployment/cloud-run/service.yaml @@ -14,13 +14,10 @@ spec: cpu: "1" memory: "1Gi" env: - - name: DATABASE_URI - valueFrom: - secretKeyRef: - name: sereact-db-uri - key: latest - - name: DATABASE_NAME - value: "imagedb" + - name: FIRESTORE_PROJECT_ID + value: "gen-lang-client-0424120530" + - name: FIRESTORE_CREDENTIALS_FILE + value: "/var/secrets/google/key.json" - name: GCS_BUCKET_NAME value: "your-bucket-name" - name: API_KEY_SECRET diff --git a/deployment/cloudbuild.yaml b/deployment/cloudbuild.yaml index d6a7d5e..eb6918d 100644 --- a/deployment/cloudbuild.yaml +++ b/deployment/cloudbuild.yaml @@ -26,8 +26,8 @@ steps: - '--region=us-central1' - '--platform=managed' - '--allow-unauthenticated' - - '--set-env-vars=GCS_BUCKET_NAME=${_GCS_BUCKET_NAME},DATABASE_NAME=${_DATABASE_NAME},VECTOR_DB_ENVIRONMENT=${_VECTOR_DB_ENVIRONMENT},VECTOR_DB_INDEX_NAME=${_VECTOR_DB_INDEX_NAME},LOG_LEVEL=INFO' - - '--set-secrets=DATABASE_URI=sereact-db-uri:latest,API_KEY_SECRET=sereact-api-key-secret:latest,VECTOR_DB_API_KEY=sereact-vector-db-key:latest' + - '--set-env-vars=GCS_BUCKET_NAME=${_GCS_BUCKET_NAME},FIRESTORE_PROJECT_ID=${PROJECT_ID},VECTOR_DB_ENVIRONMENT=${_VECTOR_DB_ENVIRONMENT},VECTOR_DB_INDEX_NAME=${_VECTOR_DB_INDEX_NAME},LOG_LEVEL=INFO' + - '--set-secrets=API_KEY_SECRET=sereact-api-key-secret:latest,VECTOR_DB_API_KEY=sereact-vector-db-key:latest' # Optional: Run tests after deployment # - name: 'gcr.io/google.com/cloudsdktool/cloud-sdk' @@ -46,7 +46,6 @@ images: # Substitution variables to be set in the Cloud Build trigger substitutions: _GCS_BUCKET_NAME: 'your-app-storage-bucket' - _DATABASE_NAME: 'imagedb' _VECTOR_DB_ENVIRONMENT: 'your-pinecone-env' _VECTOR_DB_INDEX_NAME: 'image-embeddings' diff --git a/deployment/terraform/README.md b/deployment/terraform/README.md index ab91fc6..c0e0e65 100644 --- a/deployment/terraform/README.md +++ b/deployment/terraform/README.md @@ -53,22 +53,20 @@ This directory contains Terraform configurations to provision the required Googl ## Managing Secrets -Secrets for environment variables (DATABASE_URI, API_KEY_SECRET, etc.) should be managed separately using Google Secret Manager: +Secrets for environment variables (API_KEY_SECRET, VECTOR_DB_API_KEY, etc.) should be managed separately using Google Secret Manager: ```bash # Create secrets -gcloud secrets create sereact-db-uri --replication-policy="automatic" gcloud secrets create sereact-api-key-secret --replication-policy="automatic" gcloud secrets create sereact-vector-db-key --replication-policy="automatic" # Add secret versions -echo -n "your-secret-value" | gcloud secrets versions add sereact-db-uri --data-file=- echo -n "your-secret-value" | gcloud secrets versions add sereact-api-key-secret --data-file=- echo -n "your-secret-value" | gcloud secrets versions add sereact-vector-db-key --data-file=- # Update Cloud Run service to use secrets gcloud run services update sereact \ - --update-secrets=DATABASE_URI=sereact-db-uri:latest,API_KEY_SECRET=sereact-api-key-secret:latest,VECTOR_DB_API_KEY=sereact-vector-db-key:latest + --update-secrets=API_KEY_SECRET=sereact-api-key-secret:latest,VECTOR_DB_API_KEY=sereact-vector-db-key:latest ``` ## CI/CD Integration diff --git a/deployment/terraform/main.tf b/deployment/terraform/main.tf index 5748175..bbc3fdd 100644 --- a/deployment/terraform/main.tf +++ b/deployment/terraform/main.tf @@ -64,8 +64,8 @@ resource "google_cloud_run_service" "sereact" { } env { - name = "DATABASE_NAME" - value = var.firestore_db_name + name = "FIRESTORE_PROJECT_ID" + value = var.project_id } env { diff --git a/docker-compose.yml b/docker-compose.yml index 3e459a7..348ad38 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -11,7 +11,7 @@ services: environment: - PYTHONUNBUFFERED=1 - ENVIRONMENT=development - - DATABASE_NAME=imagedb - FIRESTORE_CREDENTIALS_FILE=/app/firestore-credentials.json - GOOGLE_APPLICATION_CREDENTIALS=/app/firestore-credentials.json + - FIRESTORE_PROJECT_ID=${FIRESTORE_PROJECT_ID:-} command: uvicorn main:app --host 0.0.0.0 --port 8000 --reload \ No newline at end of file diff --git a/src/core/config.py b/src/core/config.py index 39d4986..b035b14 100644 --- a/src/core/config.py +++ b/src/core/config.py @@ -17,8 +17,7 @@ class Settings(BaseSettings): return [i.strip() for i in v.split(",")] return v - # Database settings - DATABASE_NAME: str = os.getenv("DATABASE_NAME", "imagedb") + # Firestore settings FIRESTORE_PROJECT_ID: str = os.getenv("FIRESTORE_PROJECT_ID", "") FIRESTORE_CREDENTIALS_FILE: str = os.getenv("FIRESTORE_CREDENTIALS_FILE", "firestore-credentials.json")