0
|
1 apiVersion: v1
|
|
2 kind: PersistentVolume
|
|
3 metadata:
|
|
4 name: photoprism-storage
|
|
5 labels: { type: local }
|
|
6 spec:
|
|
7 storageClassName: manual
|
1
|
8 hostPath: { path: "/d4/photoprism" }
|
0
|
9 capacity: { storage: 5Gi }
|
|
10 accessModes: ["ReadWriteOnce"]
|
|
11 persistentVolumeReclaimPolicy: Retain
|
|
12 claimRef: { namespace: default, name: photoprism-storage }
|
1
|
13
|
0
|
14 ---
|
|
15 apiVersion: v1
|
|
16 kind: PersistentVolume
|
|
17 metadata:
|
|
18 name: photoprism-originals
|
|
19 labels: { type: local }
|
|
20 spec:
|
|
21 storageClassName: manual
|
1
|
22 hostPath: { path: "/my/pic" }
|
0
|
23 capacity: { storage: 5Gi }
|
|
24 accessModes: ["ReadWriteOnce"]
|
|
25 persistentVolumeReclaimPolicy: Retain
|
|
26 claimRef: { namespace: default, name: photoprism-originals }
|
1
|
27
|
0
|
28 ---
|
|
29 apiVersion: v1
|
|
30 kind: PersistentVolumeClaim
|
|
31 metadata: { name: photoprism-storage }
|
|
32 spec:
|
|
33 storageClassName: ""
|
|
34 volumeName: "photoprism-storage"
|
|
35 accessModes: ["ReadWriteOnce"]
|
|
36 resources: { requests: { storage: 5Gi } }
|
1
|
37
|
0
|
38 ---
|
|
39 apiVersion: v1
|
|
40 kind: PersistentVolumeClaim
|
|
41 metadata: { name: photoprism-originals }
|
|
42 spec:
|
|
43 storageClassName: ""
|
|
44 volumeName: "photoprism-originals"
|
|
45 accessModes: ["ReadWriteOnce"]
|
|
46 resources: { requests: { storage: 5Gi } }
|
1
|
47
|
0
|
48 ---
|
|
49 apiVersion: apps/v1
|
|
50 kind: Deployment
|
|
51 metadata:
|
|
52 name: photoprism
|
|
53 spec:
|
|
54 replicas: 1
|
|
55 selector:
|
|
56 matchLabels:
|
|
57 app: photoprism
|
|
58 template:
|
|
59 metadata:
|
|
60 labels:
|
|
61 app: photoprism
|
1
|
62 annotations:
|
|
63 prometheus.io/scrape: "false"
|
0
|
64 spec:
|
|
65 volumes:
|
|
66 - { name: photoprism-storage, persistentVolumeClaim: { claimName: photoprism-storage } }
|
|
67 - { name: photoprism-originals, persistentVolumeClaim: { claimName: photoprism-originals } }
|
1
|
68 - { name: run-mysqld, emptyDir: {}}
|
0
|
69 containers:
|
|
70 - name: photoprism
|
1
|
71 # https://github.com/photoprism/photoprism/releases
|
|
72 image: docker.io/photoprism/photoprism:221118-jammy
|
0
|
73 env:
|
|
74 - { name: PHOTOPRISM_UPLOAD_NSFW, value: "true" }
|
|
75 - { name: PHOTOPRISM_READONLY, value: "true" }
|
|
76 - { name: PHOTOPRISM_LOG_LEVEL, value: "info" }
|
|
77 - { name: PHOTOPRISM_SITE_URL, value: "https://bigasterisk.com/photoprism/" }
|
1
|
78 - { name: PHOTOPRISM_AUTH_MODE, value: "public" }
|
|
79 - { name: PHOTOPRISM_WORKERS, value: "4" }
|
|
80
|
|
81 - { name: PHOTOPRISM_DISABLE_WEBDAV, value: "true" }
|
|
82 - { name: PHOTOPRISM_DISABLE_CLASSIFICATION, value: "true" }
|
|
83 - { name: PHOTOPRISM_DISABLE_RAW, value: "true" }
|
|
84 - { name: PHOTOPRISM_JPEG_SIZE, value: "720" }
|
|
85 - { name: PHOTOPRISM_THUMB_SIZE, value: "720" }
|
|
86
|
|
87 - { name: PHOTOPRISM_DATABASE_DRIVER, value: "mysql" }
|
|
88 - { name: PHOTOPRISM_DATABASE_SERVER, value: "/run/mysqld/mysqld.sock" }
|
|
89 - { name: PHOTOPRISM_DATABASE_NAME, value: "photoprism" }
|
|
90 - { name: PHOTOPRISM_DATABASE_USER, value: "photoprism" }
|
|
91 - { name: PHOTOPRISM_DATABASE_PASSWORD, value: "insecure" }
|
|
92
|
0
|
93 ports:
|
|
94 - containerPort: 2342
|
|
95 volumeMounts:
|
|
96 - { name: photoprism-storage, mountPath: "/photoprism/storage" }
|
|
97 - { name: photoprism-originals, mountPath: "/photoprism/originals" }
|
1
|
98 - { name: run-mysqld, mountPath: "/run/mysqld" }
|
0
|
99 resources:
|
|
100 limits:
|
|
101 # tensorflow analysis goes to like 1200Mi
|
|
102 memory: 2500Mi
|
1
|
103 - name: mariadb
|
|
104 image: docker.io/mariadb:10.10.2
|
|
105 securityContext:
|
|
106 runAsUser: 1000
|
|
107 # let https://github.com/MariaDB/mariadb-docker/blob/749c720c63306d1572849afc6ab1cfa02fd08338/10.8/docker-entrypoint.sh
|
|
108 # do the startup. We could write to /etc/mysql/mariadb.conf.d if we really needed to config things.
|
|
109 # command: suggested from photoprism docs
|
|
110 # - mysqld
|
|
111 # - --innodb-buffer-pool-size=512M
|
|
112 # - --transaction-isolation=READ-COMMITTED
|
|
113 # - --character-set-server=utf8mb4
|
|
114 # - --collation-server=utf8mb4_unicode_ci
|
|
115 # - --max-connections=512
|
|
116 # - --innodb-rollback-on-timeout=OFF
|
|
117 # - --innodb-lock-wait-timeout=120
|
|
118 volumeMounts:
|
|
119 - { name: photoprism-storage, subPath: "mariadb", mountPath: "/var/lib/mysql" }
|
|
120 - { name: run-mysqld, mountPath: "/run/mysqld" }
|
|
121 env:
|
|
122 - { name: MARIADB_AUTO_UPGRADE, value: "1" }
|
|
123 - { name: MARIADB_INITDB_SKIP_TZINFO, value: "1" }
|
|
124 - { name: MARIADB_DATABASE, value: "photoprism" }
|
|
125 - { name: MARIADB_USER, value: "photoprism" }
|
|
126 - { name: MARIADB_PASSWORD, value: "insecure" }
|
|
127 - { name: MARIADB_ROOT_PASSWORD, value: "insecure" }
|
0
|
128 affinity:
|
|
129 nodeAffinity:
|
|
130 requiredDuringSchedulingIgnoredDuringExecution:
|
|
131 nodeSelectorTerms:
|
|
132 - matchExpressions:
|
|
133 - key: "kubernetes.io/hostname"
|
|
134 operator: In
|
|
135 values: ["bang"]
|
1
|
136
|
0
|
137 ---
|
|
138 apiVersion: v1
|
|
139 kind: Service
|
|
140 metadata:
|
|
141 name: photoprism
|
|
142 spec:
|
|
143 type: LoadBalancer
|
|
144 ports:
|
|
145 - { port: 80, targetPort: 2342 }
|
|
146 selector:
|
|
147 app: photoprism
|