labring / FastGPT

FastGPT is a knowledge-based platform built on the LLMs, offers a comprehensive suite of out-of-the-box capabilities such as data processing, RAG retrieval, and visual AI workflow orchestration, letting you easily develop and deploy complex question-answering systems without the need for extensive setup or configuration.
https://tryfastgpt.ai
Other
17.46k stars 4.69k forks source link

initdb: error: program "postgres" is needed by initdb but was not found in the same directory as "/usr/lib/postgresql/15/bin/initdb" #784

Closed CalvinFang closed 8 months ago

CalvinFang commented 8 months ago

例行检查

你的版本

问题描述 我使用docker-compose部署启动时发现pg一直重启,通过logs查看提示 popen failure: Cannot allocate memory initdb: error: program "postgres" is needed by initdb but was not found in the same directory as "/usr/lib/postgresql/15/bin/initdb" 也使用了初始化的curl尝试修复但未成功: curl --location --request POST 'http://*****:3000/api/admin/initv467' \

--header 'rootkey: root_key' \ --header 'Content-Type: application/json' 复现步骤

预期结果

相关截图

docker ps结果

[root@***** fast]# docker ps CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 0e739ee4b4b4 ghcr.io/labring/fastgpt:latest "sh -c 'node ${serve…" 32 minutes ago Up 32 minutes 0.0.0.0:3000->3000/tcp fastgpt 9ab1e0909d33 ankane/pgvector:v0.5.0 "docker-entrypoint.s…" 32 minutes ago Restarting (1) 23 seconds ago pg eb5523051929 mongo:5.0.18 "docker-entrypoint.s…" 32 minutes ago Up 32 minutes 0.0.0.0:27017->27017/tcp mongo

docker的logs

[root@ fast]# docker logs 9ab1e0909d33 popen failure: Cannot allocate memory initdb: error: program "postgres" is needed by initdb but was not found in the same directory as "/usr/lib/postgresql/15/bin/initdb" popen failure: Cannot allocate memory initdb: error: program "postgres" is needed by initdb but was not found in the same directory as "/usr/lib/postgresql/15/bin/initdb" [root@ fast]# curl --location --request POST 'http://*****:3000/api/admin/initv467' --header 'rootkey: root_key' --header 'Content-Type: application/json' 得到的回复是{"code":500,"statusText":"","message":"getaddrinfo ENOTFOUND pg","data":null}

文件目录如下,发现pg的目录下为空

[root@***** fast]# tree ├── config.json ├── docker-compose.yml ├── mongo │   └── data │   ├── collection-0--4162485612890685892.wt │   ├── collection-11-7081506281161257466.wt │   └── WiredTiger.wt │   └── ....... └── pg | └── data │   └── data目录下没有文件生成

DockerFile文件内容如下

[root@***** fast]# cat docker-compose.yml version: '3.3' services: pg: image: ankane/pgvector:v0.5.0 # git

image: registry.cn-hangzhou.aliyuncs.com/fastgpt/pgvector:v0.5.0 # 阿里云

container_name: pg
restart: always
ports: # 生产环境建议不要暴露
  - 5432:5432
networks:
  - fastgpt
environment:
  # 这里的配置只有首次运行生效。修改后,重启镜像是不会生效的。需要把持久化数据删除再重启,才有效果
  - POSTGRES_USER=username
  - POSTGRES_PASSWORD=password
  - POSTGRES_DB=postgres
volumes:
  - ./pg/data:/var/lib/postgresql/data

mongo: image: mongo:5.0.18

image: registry.cn-hangzhou.aliyuncs.com/fastgpt/mongo:5.0.18 # 阿里云

container_name: mongo
restart: always
ports: # 生产环境建议不要暴露
  - 27017:27017
networks:
  - fastgpt
environment:
  # 这里的配置只有首次运行生效。修改后,重启镜像是不会生效的。需要把持久化数据删除再重启,才有效果
  - MONGO_INITDB_ROOT_USERNAME=username
  - MONGO_INITDB_ROOT_PASSWORD=password
volumes:
  - ./mongo/data:/data/db

fastgpt: container_name: fastgpt image: ghcr.io/labring/fastgpt:latest # git

image: registry.cn-hangzhou.aliyuncs.com/fastgpt/fastgpt:latest # 阿里云

ports:
  - 3000:3000
networks:
  - fastgpt
depends_on:
  - mongo
  - pg
restart: always
environment:
  # root 密码,用户名为: root
  - DEFAULT_ROOT_PSW=4jYIRrZ
  # 中转地址,如果是用官方号,不需要管。务必加 /v1
  - OPENAI_BASE_URL=https://apivip.aiproxy.io
  - CHAT_API_KEY=sk-*****
  - DB_MAX_LINK=5 # database max link
  - TOKEN_KEY=any
  - ROOT_KEY=root_key
  - FILE_TOKEN_KEY=filetoken
  # mongo 配置,不需要改. 如果连不上,可能需要去掉 ?authSource=admin
  - MONGODB_URI=mongodb://username:password@mongo:27017/fastgpt?authSource=admin
  # pg配置. 不需要改
  - PG_URL=postgresql://username:password@pg:5432/postgres
volumes:
  - ./config.json:/app/data/config.json

networks: fastgpt:

DoubleLcn commented 8 months ago

可以尝试一下在 pg 部署的 docker-compose 配置中 增加 privileged=true ,应该是由于权限问题,我是通过这个方式解决的

c121914yu commented 8 months ago

Bot detected the issue body's language is not English, translate it automatically. 👯👭🏻🧑‍🤝‍🧑👫🧑🏿‍🤝‍🧑🏻👩🏾‍🤝‍👨🏿👬🏿


You can try adding privileged=true in the docker-compose configuration deployed by pg. It should be due to permission issues. I solved it in this way.

CalvinFang commented 8 months ago

tks,我将pg镜像版本由v0.5.0更换为pgvector:v0.4.2解决了这个问题;

c121914yu commented 8 months ago

Bot detected the issue body's language is not English, translate it automatically. 👯👭🏻🧑‍🤝‍🧑👫🧑🏿‍🤝‍🧑🏻👩🏾‍🤝‍👨🏿👬🏿


tks, I changed the pg image version from v0.5.0 to pgvector:v0.4.2 to solve this problem;

lichtud commented 6 months ago

可以尝试一下在 pg 部署的 docker-compose 配置中 增加 privileged=true ,应该是由于权限问题,我是通过这个方式解决的

thx,我也是这个问题解决了

Dhaizei commented 2 months ago

可以尝试一下在 pg 部署的 docker-compose 配置中 增加 privileged=true ,应该是由于权限问题,我是通过这个方式解决的 (base) root@DESKTOP-ND8N4R2:/mnt/e/code/FastGPT/fastgpt# docker-compose up -d privileged=true no such service: privileged=true 何解?我是wsl2+docker桌面版弄的,