当前位置: 首页 > 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.jsqmd.com/news/997055/

相关文章:

  • 兰州手工单玻镁岩棉净化板厂商实测评测2026版:青海净化板、兰州不锈钢净化板、兰州中空玻镁净化板、兰州中空玻镁岩棉净化板选择指南 - 优质品牌商家
  • Zephyr-7B对齐技术解析:dDPO与AI Feedback实战指南
  • MATLAB光学设计辅助工具包:光路建模、像差分解与成像性能可视化
  • 2026年异地升学规划机构排名,如何选择? - myqiye
  • NRT框架:语言模型推理训练的革命性突破
  • Nano-X API完全参考手册:从基础窗口创建到高级图形绘制的实用指南
  • Matlab线性方程组求解工具包:四种高斯消元策略实现与自动对比
  • ebpf1 - 小镇
  • MuleSoft企业级AI编排:构建可审计、可治理的LLM集成平台
  • 原神祈愿记录导出工具:免费掌握抽卡数据的终极指南
  • ZeroVM社区生态:贡献指南与开源协作最佳实践
  • 钢结构制造厂口碑排名,哪家合作案例多? - mypinpai
  • 兰州高三寒假集训核心技术拆解与合规机构解析:兰州暑假高考冲刺班、兰州正规复读学校、兰州正规的高考复读学校、兰州正规高三复读学校选择指南 - 优质品牌商家
  • 珠三角弱电工程挑选指南:广州邦越深耕近二十年一站式解决数字化建设难题,弱电工程/广州机房建设,弱电工程企业有哪些 - 品牌推荐师
  • FPGA项目避坑指南:用Si5340替代晶振时,这几个寄存器配置错了会没输出
  • stltostp:免费开源的STL到STEP格式转换终极指南
  • CEVA-BX2 DSP深度调优笔记:如何榨干VLIW+SIMD混合架构的每一分性能与能效
  • 多维聚合实战:从SQL GROUP BY到数据立方体的跃迁
  • 2026年上海汽车凹陷拉拔价格全解析:技术工艺、成本构成与主流服务商对比 - 优质品牌商家
  • 2026南京月子中心连锁店做GEO应该怎么选服务商?本地靠谱GEO服务商推荐与选型指南 - 企业新闻快传
  • CANN TileLang API最佳实践
  • STM32H743硬件IIC驱动+AT24C02 EEPROM读写封装(含LED调试指示)
  • 从URL设计源头避免414:前端与后端工程师都该知道的5个最佳实践
  • go-cache无法清除cache.什么cache可以
  • 注册公司执照代办靠谱的品牌有哪些? - mypinpai
  • 终极GTA5菜单指南:YimMenu完整教程与安全使用手册
  • 2026年上海电器设备回收服务能力观察:沪豫合与全城上门有何不同? - 优质品牌商家
  • ZLMediaKit转流性能优化:为什么同协议转发能省掉组帧?一个Demo带你实测
  • 量子计算与大语言模型交叉研究:评估与挑战
  • Qucs-S四大仿真引擎深度评测:Ngspice、Xyce、SpiceOpus、Qucsator特性对比与选择指南