apiVersion: apps/v1 kind: Deployment metadata: name: docsgpt-api spec: replicas: 1 selector: matchLabels: app: docsgpt-api template: metadata: labels: app: docsgpt-api spec: initContainers: # Block pod start until Postgres accepts connections. The `postgres-init` # Job is responsible for running alembic migrations; this container only # waits for the server to be reachable. - name: wait-for-postgres image: postgres:16-alpine command: - sh - -c - | until pg_isready -h postgres -p 5432 -U docsgpt -d docsgpt; do echo "Waiting for postgres..."; sleep 2; done containers: - name: docsgpt-api image: arc53/docsgpt ports: - containerPort: 7091 resources: limits: memory: "4Gi" cpu: "2" requests: memory: "2Gi" cpu: "1" envFrom: - secretRef: name: docsgpt-secrets env: - name: FLASK_APP value: "application/app.py" - name: DEPLOYMENT_TYPE value: "cloud" - name: POSTGRES_URI valueFrom: secretKeyRef: name: docsgpt-secrets key: POSTGRES_URI # Disable in-app auto-bootstrap. The `postgres-init` Job under # deployment/k8s/jobs/ owns schema creation and Alembic migrations, # so application pods must not race with it on rollout. - name: AUTO_MIGRATE value: "false" - name: AUTO_CREATE_DB value: "false" --- apiVersion: apps/v1 kind: Deployment metadata: name: docsgpt-worker spec: replicas: 1 selector: matchLabels: app: docsgpt-worker template: metadata: labels: app: docsgpt-worker spec: initContainers: - name: wait-for-postgres image: postgres:16-alpine command: - sh - -c - | until pg_isready -h postgres -p 5432 -U docsgpt -d docsgpt; do echo "Waiting for postgres..."; sleep 2; done containers: - name: docsgpt-worker image: arc53/docsgpt # `parsing` queue carries read_document/parse_document; required for its await to resolve. # For heavy/OCR parsing, run a separate deployment with `-Q parsing` (and GPU env). command: ["celery", "-A", "application.app.celery", "worker", "-l", "INFO", "-n", "worker.%h", "-Q", "docsgpt,parsing"] resources: limits: memory: "4Gi" cpu: "2" requests: memory: "2Gi" cpu: "1" envFrom: - secretRef: name: docsgpt-secrets env: - name: API_URL value: "http://" - name: POSTGRES_URI valueFrom: secretKeyRef: name: docsgpt-secrets key: POSTGRES_URI # Disable in-app auto-bootstrap. The `postgres-init` Job under # deployment/k8s/jobs/ owns schema creation and Alembic migrations, # so application pods must not race with it on rollout. - name: AUTO_MIGRATE value: "false" - name: AUTO_CREATE_DB value: "false" --- apiVersion: apps/v1 kind: Deployment metadata: name: docsgpt-frontend spec: replicas: 1 selector: matchLabels: app: docsgpt-frontend template: metadata: labels: app: docsgpt-frontend spec: containers: - name: docsgpt-frontend image: arc53/docsgpt-fe ports: - containerPort: 5173 resources: limits: memory: "1Gi" cpu: "1" requests: memory: "256Mi" cpu: "100m" env: - name: VITE_API_HOST value: "http://" - name: VITE_API_STREAMING value: "true"