{ "apiVersion": "apps/v1", "kind": "Deployment", "metadata": { "labels": { "app.kubernetes.io/name": "presentations-web", "app.kubernetes.io/part-of": "flowercore" }, "name": "presentations-web", "namespace": "fc-presentations" }, "spec": { "progressDeadlineSeconds": 600, "replicas": 1, "revisionHistoryLimit": 10, "selector": { "matchLabels": { "app.kubernetes.io/name": "presentations-web" } }, "strategy": { "type": "Recreate" }, "template": { "metadata": { "annotations": { "kubectl.kubernetes.io/restartedAt": "2026-04-23T14:47:39-05:00", "prometheus.io/path": "/metrics/prometheus", "prometheus.io/port": "8080", "prometheus.io/scrape": "true" }, "labels": { "app.kubernetes.io/name": "presentations-web", "app.kubernetes.io/part-of": "flowercore" } }, "spec": { "containers": [ { "envFrom": [ { "configMapRef": { "name": "presentations-web-config" } }, { "secretRef": { "name": "presentations-web-secrets" } } ], "image": "localhost/fc-presentations:gx10-v1", "imagePullPolicy": "Never", "livenessProbe": { "failureThreshold": 3, "httpGet": { "path": "/health", "port": 8080, "scheme": "HTTP" }, "initialDelaySeconds": 30, "periodSeconds": 30, "successThreshold": 1, "timeoutSeconds": 5 }, "name": "presentations-web", "ports": [ { "containerPort": 8080, "name": "http", "protocol": "TCP" } ], "readinessProbe": { "failureThreshold": 6, "httpGet": { "path": "/health", "port": 8080, "scheme": "HTTP" }, "initialDelaySeconds": 10, "periodSeconds": 10, "successThreshold": 1, "timeoutSeconds": 5 }, "resources": {}, "terminationMessagePath": "/dev/termination-log", "terminationMessagePolicy": "File", "volumeMounts": [ { "mountPath": "/data", "name": "data", "subPath": "data" }, { "mountPath": "/home/app/wwwroot/uploads", "name": "data", "subPath": "uploads" } ] } ], "dnsPolicy": "ClusterFirst", "initContainers": [ { "command": [ "/bin/sh", "-lc", "set -eu\nmkdir -p /mnt/pvc/data /mnt/pvc/uploads\n\nfor file in presentations.db presentations.db-shm presentations.db-wal; do\n if [ -f \"/mnt/pvc/${file}\" ] && [ ! -f \"/mnt/pvc/data/${file}\" ]; then\n mv \"/mnt/pvc/${file}\" \"/mnt/pvc/data/${file}\"\n fi\ndone\n\nif [ -d /mnt/pvc/dp-keys ] && [ ! -d /mnt/pvc/data/dp-keys ]; then\n mv /mnt/pvc/dp-keys /mnt/pvc/data/dp-keys\nfi\n\nfor directory in imports slides html-bundles; do\n if [ -d \"/mnt/pvc/${directory}\" ] && [ ! -d \"/mnt/pvc/uploads/${directory}\" ]; then\n mv \"/mnt/pvc/${directory}\" \"/mnt/pvc/uploads/${directory}\"\n fi\ndone\n\nmkdir -p \\\n /mnt/pvc/data/dp-keys \\\n /mnt/pvc/uploads/imports \\\n /mnt/pvc/uploads/slides \\\n /mnt/pvc/uploads/html-bundles\n" ], "image": "localhost/fc-presentations:gx10-v1", "imagePullPolicy": "Never", "name": "storage-init", "resources": {}, "terminationMessagePath": "/dev/termination-log", "terminationMessagePolicy": "File", "volumeMounts": [ { "mountPath": "/mnt/pvc", "name": "data" } ] } ], "restartPolicy": "Always", "schedulerName": "default-scheduler", "securityContext": { "fsGroup": 1654, "fsGroupChangePolicy": "OnRootMismatch" }, "terminationGracePeriodSeconds": 30, "volumes": [ { "name": "data", "persistentVolumeClaim": { "claimName": "presentations-web-data" } } ] } } } }