fix: add mem0-ui container and init container patch for sentence_transformers

This commit is contained in:
hermes-bot
2026-06-01 16:05:38 +00:00
parent ed054da5d8
commit 042a377143

View File

@@ -273,23 +273,98 @@ mem0 server 启动时读取 `DASHBOARD_URL`,设置 `allow_origins=[DASHBOARD_U
确保 `DASHBOARD_URL` 设为 dashboard 的外部访问地址(与 `NEXT_PUBLIC_API_URL` 的域名部分一致)。 确保 `DASHBOARD_URL` 设为 dashboard 的外部访问地址(与 `NEXT_PUBLIC_API_URL` 的域名部分一致)。
### sentence_transformers 导入错误 ## sentence_transformers 导入错误(永久修复)
mem0 的 `huggingface.py` 在文件顶部执行 `from sentence_transformers import SentenceTransformer`,即使走 `huggingface_base_url` 路径(用 OpenAI 客户端调用 TEI不需要本地模型也会尝试加载造成 `ModuleNotFoundError` mem0 的 `huggingface.py` 在文件顶部执行 `from sentence_transformers import SentenceTransformer`,即使走 `huggingface_base_url` 路径(用 OpenAI 客户端调用 TEI不需要本地模型也会尝试加载造成 `ModuleNotFoundError`
**临时修复**(容器内,重启会丢) 通过 init container + emptyDir 挂载实现持久修复pod recreate 不丢失
```bash ```yaml
sed -i 's/from sentence_transformers import SentenceTransformer/# from sentence_transformers import SentenceTransformer/' /usr/local/lib/python3.12/site-packages/mem0/embeddings/huggingface.py apiVersion: apps/v1
kind: Deployment
metadata:
name: mem0
namespace: tei
spec:
replicas: 1
selector:
matchLabels:
app: mem0
template:
metadata:
labels:
app: mem0
spec:
initContainers:
- name: patch-mem0
image: ccr.ccs.tencentyun.com/tei_agent/mem0:latest
command:
- sh
- -c
- |
cp -r /usr/local/lib/python3.12/site-packages/mem0 /tmp/mem0-patch/
sed -i 's/from sentence_transformers import SentenceTransformer/# from sentence_transformers import SentenceTransformer/' /tmp/mem0-patch/embeddings/huggingface.py
echo "patch done"
volumeMounts:
- name: mem0-code
mountPath: /tmp/mem0-patch
containers:
- name: mem0-ui
image: ccr.ccs.tencentyun.com/tei_agent/mem0-ui:latest
ports:
- containerPort: 3000
name: http
env:
- name: NEXT_PUBLIC_API_URL
value: "https://api.mem0.violin-work.online"
- name: API_INTERNAL_URL
value: "http://mem0.tei.svc.cluster.local:8000"
- name: NEXT_PUBLIC_INSTANCE_NAME
value: Mem0
resources:
limits:
cpu: 200m
memory: 500Mi
requests:
cpu: 100m
memory: 250Mi
- name: mem0
image: ccr.ccs.tencentyun.com/tei_agent/mem0:latest
ports:
- containerPort: 8000
name: http
envFrom:
- configMapRef:
name: mem0-env
- secretRef:
name: mem0-secrets
env:
- name: POSTGRES_PASSWORD
valueFrom:
secretKeyRef:
name: dify-prod-db-secret
key: password
volumeMounts:
- name: mem0-history
mountPath: /app/data
- name: mem0-code
mountPath: /usr/local/lib/python3.12/site-packages/mem0
resources:
limits:
cpu: "2"
memory: 4Gi
requests:
cpu: "500m"
memory: 1Gi
volumes:
- name: mem0-history
persistentVolumeClaim:
claimName: mem0-history
- name: mem0-code
emptyDir: {}
``` ```
验证: **原理**init container 先于主容器启动,把镜像里的 mem0 代码复制到 emptyDirsed 补丁打在 emptyDir 里。主容器挂载 emptyDir 到 site-packages覆盖镜像原有文件实现补丁持久化recreate 不丢)。
```bash
python3 -c "from mem0.embeddings.huggingface import HuggingFaceEmbedding"
```
**永久修复**:在 Dockerfile 里加这步,或修改本地 mem0 源码后 COPY 进容器。
## 功能测试 ## 功能测试