apiVersion: apps/v1 kind: Deployment metadata: name: formbricks namespace: {{ .namespace }} spec: replicas: 1 strategy: type: Recreate selector: matchLabels: component: web template: metadata: labels: component: web spec: securityContext: runAsNonRoot: false runAsUser: 0 seccompProfile: type: RuntimeDefault containers: - name: formbricks image: formbricks/formbricks:3.6.0 ports: - name: http containerPort: 3000 protocol: TCP env: - name: NODE_OPTIONS value: "--max-old-space-size=768" - name: WEBAPP_URL value: "https://{{ .domain }}" - name: NEXTAUTH_URL value: "https://{{ .domain }}" - name: DATABASE_URL valueFrom: secretKeyRef: name: formbricks-secrets key: dbUrl - name: NEXTAUTH_SECRET valueFrom: secretKeyRef: name: formbricks-secrets key: nextauthSecret - name: ENCRYPTION_KEY valueFrom: secretKeyRef: name: formbricks-secrets key: encryptionKey - name: CRON_SECRET valueFrom: secretKeyRef: name: formbricks-secrets key: cronSecret - name: REDIS_PASSWORD valueFrom: secretKeyRef: name: formbricks-secrets key: redis.password - name: REDIS_URL value: "redis://:$(REDIS_PASSWORD)@{{ .redis.host }}:6379" - name: EMAIL_VERIFICATION_DISABLED value: "1" - name: PASSWORD_RESET_DISABLED value: "1" resources: limits: cpu: "1" ephemeral-storage: 1Gi memory: 1Gi requests: cpu: 50m ephemeral-storage: 50Mi memory: 256Mi volumeMounts: - name: formbricks-uploads mountPath: /home/nextjs/apps/web/uploads livenessProbe: httpGet: path: /health port: 3000 initialDelaySeconds: 90 timeoutSeconds: 5 periodSeconds: 15 failureThreshold: 6 readinessProbe: httpGet: path: /health port: 3000 initialDelaySeconds: 60 timeoutSeconds: 3 periodSeconds: 10 failureThreshold: 3 securityContext: readOnlyRootFilesystem: false volumes: - name: formbricks-uploads persistentVolumeClaim: claimName: formbricks-uploads restartPolicy: Always