apiVersion: apps/v1 kind: Deployment metadata: name: ecommerce-app namespace: ecommerce labels: app: ecommerce-app spec: replicas: 1 selector: matchLabels: app: ecommerce-app template: metadata: labels: app: ecommerce-app spec: initContainers: - name: wait-for-postgres image: postgres:15-alpine command: - sh - -c - | until pg_isready -h postgres -p 5432 -U vaishnavi; do echo "Waiting for PostgreSQL..."; sleep 3 done - name: wait-for-mongodb image: mongo:7 command: - sh - -c - | until mongosh --host mongodb --port 27017 \ --eval "db.adminCommand('ping')" --quiet; do echo "Waiting for MongoDB..."; sleep 3 done - name: run-migrations image: ecommerce-backend:latest command: - sh - -c - npx prisma migrate deploy envFrom: - secretRef: name: app-secret env: - name: NODE_ENV value: "production" containers: - name: ecommerce-app image: ecommerce-backend:latest ports: - containerPort: 3000 name: http envFrom: - configMapRef: name: app-config - secretRef: name: app-secret volumeMounts: - name: uploads-volume mountPath: /app/uploads resources: requests: cpu: "250m" memory: "256Mi" limits: cpu: "500m" memory: "512Mi" readinessProbe: httpGet: path: /health port: 3000 initialDelaySeconds: 15 periodSeconds: 10 failureThreshold: 3 livenessProbe: httpGet: path: /health port: 3000 initialDelaySeconds: 30 periodSeconds: 20 failureThreshold: 3 volumes: - name: uploads-volume emptyDir: {}