当前位置: 首页 > news >正文

启动Mem0 REST API服务报错

前提

Mem0 Restfull API 

github地址:https://github.com/mem0ai/mem0/tree/main/server

介绍文档:https://docs.mem0.ai/open-source/features/rest-api

开始配置

按正常流程,我把Mem0的包上传到虚拟机之后,修改.env基础配置如下(OPENAI_API_KEY修改成自己的):

OPENAI_API_KEY=abcPOSTGRES_HOST=postgres
POSTGRES_PORT=5432
POSTGRES_DB=postgres
POSTGRES_USER=postgres
POSTGRES_PASSWORD=postgres
POSTGRES_COLLECTION_NAME=memoriesNEO4J_URI=bolt://neo4j:7687
NEO4J_USERNAME=neo4j
NEO4J_PASSWORD=mem0graph

然后修改docker-compose.yaml内容如下:

name: mem0-devservices:mem0:build:context: ..  # Set context to parent directorydockerfile: mem0/dev.Dockerfileports:- "8888:8000"env_file:- .envnetworks:- mem0_networkvolumes:- ./history:/app/history      # History db location. By default, it creates a history.db file on the server folder- .:/app                      # Server code. This allows to reload the app when the server code is updated- ../mem0:/app/packages/mem0  # Mem0 library. This allows to reload the app when the library code is updateddepends_on:postgres:condition: service_healthyneo4j:condition: service_healthycommand: uvicorn main:app --host 0.0.0.0 --port 8000 --reload  # Enable auto-reloadenvironment:- PYTHONDONTWRITEBYTECODE=1  # Prevents Python from writing .pyc files- PYTHONUNBUFFERED=1  # Ensures Python output is sent straight to terminalpostgres:image: ankane/pgvector:v0.5.1restart: on-failureshm_size: "128mb" # Increase this if vacuuming fails with a "no space left on device" errornetworks:- mem0_networkenvironment:- POSTGRES_USER=postgres- POSTGRES_PASSWORD=postgreshealthcheck:test: ["CMD", "pg_isready", "-q", "-d", "postgres", "-U", "postgres"]interval: 5stimeout: 5sretries: 5volumes:- postgres_db:/var/lib/postgresql/dataports:- "8432:5432"neo4j:image: neo4j:5.26.4networks:- mem0_networkhealthcheck:test: wget bolt://neo4j:8687 || exit 1
      interval: 1stimeout: 10sretries: 20start_period: 90sports:- "8474:7474" # HTTP- "8687:7687" # Boltvolumes:- ./neo4j/data:/data  # 将 Neo4j 数据存储到 mem0 目录- ./neo4j/logs:/logs  # 将 Neo4j 日志存储到 mem0 目录- ./neo4j/import:/var/lib/neo4j/import  # 将 Neo4j 导入目录存储到 mem0 目录environment:- NEO4J_AUTH=neo4j/mem0graph- NEO4J_PLUGINS=["apoc"]  # Add this line to install APOC- NEO4J_apoc_export_file_enabled=true- NEO4J_apoc_import_file_enabled=true- NEO4J_apoc_import_file_use__neo4j__config=truevolumes:neo4j_data:postgres_db:networks:mem0_network:driver: bridge

执行报错

然后执行 docker compose up 命令启动,结果报错:

dependency failed to start: container mem0-dev-neo4j-1 is unhealthy

查看neo4j日志:docker-compose logs neo4j

报错内容如下:

/usr/local/lib/python3.6/site-packages/paramiko/transport.py:32: CryptographyDeprecationWarning: Python 3.6 is no longer supported by the Python core team. Therefore, support for it is deprecated in cryptography. The next release of cryptography will remove support for Python 3.6. from cryptography.hazmat.backends import default_backend ERROR: The Compose file './docker-compose.yaml' is invalid because: 'name' does not match any of the regexes: '^x-'
You might be seeing this error because you're using the wrong Compose file version. Either specify a supported version (e.g "2.2" or "3.3") and place your service definitions under the services key, or omit the version key and place your service definitions at the root of the file to use version 1. For more on the Compose file format versions, see https://docs.docker.com/compose/compose-file/

错误信息显示有两个问题:

1. Docker Compose 版本问题:你的 Docker Compose 版本不支持 name 字段(mem0-dev 不被支持 - 这是 Docker Compose V2 的新特性)

2. 健康检查命令还没修改:日志显示还在使用旧的 wget bolt://neo4j:8687 命令

问题修正

后面我就重新修改了docker-compose.yaml配置如下:

version: '3.8'services:mem0:build:context: ..  # Set context to parent directorydockerfile: mem0/dev.Dockerfilecontainer_name: mem0-dev-mem0ports:- "8888:8000"env_file:- .envnetworks:- mem0_networkvolumes:- ./history:/app/history      # History db location. By default, it creates a history.db file on the server folder- .:/app                      # Server code. This allows to reload the app when the server code is updated- ../mem0:/app/packages/mem0  # Mem0 library. This allows to reload the app when the library code is updateddepends_on:postgres:condition: service_healthyneo4j:condition: service_healthycommand: uvicorn main:app --host 0.0.0.0 --port 8000 --reload  # Enable auto-reloadenvironment:- PYTHONDONTWRITEBYTECODE=1  # Prevents Python from writing .pyc files- PYTHONUNBUFFERED=1  # Ensures Python output is sent straight to terminalpostgres:image: ankane/pgvector:v0.5.1container_name: mem0-dev-postgresrestart: on-failureshm_size: "128mb" # Increase this if vacuuming fails with a "no space left on device" errornetworks:- mem0_networkenvironment:- POSTGRES_USER=postgres- POSTGRES_PASSWORD=postgreshealthcheck:test: ["CMD", "pg_isready", "-q", "-d", "postgres", "-U", "postgres"]interval: 5stimeout: 5sretries: 5volumes:- postgres_db:/var/lib/postgresql/dataports:- "8432:5432"neo4j:image: neo4j:5.26.4container_name: mem0-dev-neo4jnetworks:- mem0_networkhealthcheck:# test: ["CMD-SHELL", "curl -f http://localhost:7474 || exit 1"]test: ["CMD-SHELL", "wget -q --spider http://localhost:7474 || exit 1"]interval: 10stimeout: 5sretries: 10start_period: 90sports:- "8474:7474" # HTTP- "8687:7687" # Boltvolumes:- ./neo4j/data:/data  # 将 Neo4j 数据存储到 mem0 目录- ./neo4j/logs:/logs  # 将 Neo4j 日志存储到 mem0 目录- ./neo4j/import:/var/lib/neo4j/import  # 将 Neo4j 导入目录存储到 mem0 目录environment:- NEO4J_AUTH=neo4j/mem0graph- NEO4J_PLUGINS=["apoc"]- NEO4J_apoc_export_file_enabled=true- NEO4J_apoc_import_file_enabled=true- NEO4J_apoc_import_file_use__neo4j__config=truevolumes:neo4j_data:postgres_db:networks:mem0_network:driver: bridge

然后执行命令:

docker-compose down     # 将之前启动的容器关闭并删除
docker-compose up -d     # 重启容器

然后看到运行正常了:

image

 访问Swagger页面也正常:

image

 

http://www.zskr.cn/news/1508824.html

相关文章:

  • 兰州手工单玻镁岩棉净化板厂商实测评测2026版:青海净化板、兰州不锈钢净化板、兰州中空玻镁净化板、兰州中空玻镁岩棉净化板选择指南 - 优质品牌商家
  • 2026年异地升学规划机构排名,如何选择? - myqiye
  • Zephyr-7B对齐技术解析:dDPO与AI Feedback实战指南
  • MATLAB光学设计辅助工具包:光路建模、像差分解与成像性能可视化
  • ZeroVM社区生态:贡献指南与开源协作最佳实践
  • ebpf1 - 小镇
  • 钢结构制造厂口碑排名,哪家合作案例多? - mypinpai
  • stltostp:免费开源的STL到STEP格式转换终极指南
  • 珠三角弱电工程挑选指南:广州邦越深耕近二十年一站式解决数字化建设难题,弱电工程/广州机房建设,弱电工程企业有哪些 - 品牌推荐师
  • CEVA-BX2 DSP深度调优笔记:如何榨干VLIW+SIMD混合架构的每一分性能与能效
  • 多维聚合实战:从SQL GROUP BY到数据立方体的跃迁
  • CANN TileLang API最佳实践
  • 注册公司执照代办靠谱的品牌有哪些? - mypinpai
  • 2026年上海电器设备回收服务能力观察:沪豫合与全城上门有何不同? - 优质品牌商家
  • 量子计算与大语言模型交叉研究:评估与挑战
  • Qucs-S四大仿真引擎深度评测:Ngspice、Xyce、SpiceOpus、Qucsator特性对比与选择指南
  • 从入门到精通:后端开发工程师的成长路径
  • BERT-Small代码实现原理深度解析:4层轻量级模型的预训练与推理全流程指南
  • 2026年导电布胶带口碑排名,哪个好? - mypinpai
  • Open API Spex完全指南:Elixir Plug应用的终极API规范工具
  • 2026年6月恒温恒湿箱厂家权威榜单发布:专业能力与市场口碑双重认证 - 品牌推荐
  • LDA-1B机器人基础模型:多模态扩散变换器与DINOv3视觉编码解析
  • 2026年6月珠海家装公司推荐:辰臻装饰领衔,五家实力品牌深度横评 - 品牌推荐
  • 南京教育连锁店做GEO应该怎么选服务商?2026本地靠谱GEO服务商推荐与选型指南 - 企业新闻快传
  • Python知识增强系统:10个机制穿透式项目实战
  • 2026年企业搬迁服务口碑排名,靠谱的有哪些? - 工业设备
  • 《魔域》辅助开发笔记:如何安全高效地遍历与读取魔石商店的所有商品信息
  • 10分钟掌握Python数据科学生态:gh_mirrors/bo/Books-项目的Pandas与NumPy速查手册
  • 伺服电机仿真(35):Simulink仿真实践——模型线性化与频域分析工具使用
  • 别再死记硬背PCA了!从Rayleigh商到Courant-Fischer定理,图解主成分分析(PCA)的数学根基