dify更改访问端口以及PostgreSQL,以及在库里导出知识库

发布时间:2026/5/20 18:36:56

dify更改访问端口以及PostgreSQL,以及在库里导出知识库 提示文章写完后目录可以自动生成如何生成可参考右边的帮助文档dify安装与配置前言一、修改端口二、映射数据库端口三、修改时间四、重新启动五、新增在PostgreSQL导出的知识库总结前言传统AI开发流程存在技术门槛高、部署复杂、迭代周期长等问题。中小团队常面临算力资源有限、模型微调困难、多模态能力整合不足等痛点导致创新效率低下。Dify作为新一代AI应用开发平台提供可视化工作流编排和一站式部署能力。内置RAG引擎支持非结构化数据处理允许开发者通过自然语言快速定义AI智能体行为大幅降低LLM应用开发成本。一、修改端口先说一下目录我的目录为D:\dify-main\dify\docker看到很多人都是修改的docker-compose.yaml文件但是结合官方给的感觉没有那么麻烦修改.env文件就可以打开.env搜索EXPOSE_NGINX_PORT80本身默认的是80我们换一个端口 如图改成了8001那么我们之后登录的网址就是127.0.0.1:8001好结束该端口就是这么简单不需要多么复杂的操作二、映射数据库端口解释一下因为数据都是存放数据库的我们连上数据库更加方便查看若不想连数据库的话不需要修改。这次需要修改docker-compose.yaml文件在dify/docker目录下cmd当中先执行dockerps可以看到26a1dad5592d postgres:15-alpinedocker-entrypoint.s…About an hour ago Up44seconds(healthy)5432/tcp 说明还在容器当中建议直接搜索 image: postgres:15-alpine 因为只有一处加上 ports: -5432:5432前面的是 外部端口宿主机端口也就是你从自己的电脑访问时使用的端口。所以若有多个类似工具基本都是5432就会冲突可以改成其他如5433.5434等防止冲突 后面的是 内部端口容器端口也就是 Docker 容器内部PostgreSQL 服务实际监听的端口。三、修改时间因为目前官方bug时间是UTC所以时间早12h前端后端都是这样前端显示在web界面修改会显示修改成功但是实际没有成功所以目前没有解决方案不过数据库时间可以修改这个修不修改影响不大想修改的可以看一下。可以根据我下面的改一下我每一个需要改的地方都加了#时区所以直接搜索上面的内容就可以定位x-shared-env:shared-api-worker-env CONSOLE_API_URL:${CONSOLE_API_URL:-}CONSOLE_WEB_URL:${CONSOLE_WEB_URL:-}SERVICE_API_URL:${SERVICE_API_URL:-}APP_API_URL:${APP_API_URL:-}APP_WEB_URL:${APP_WEB_URL:-}FILES_URL:${FILES_URL:-}INTERNAL_FILES_URL:${INTERNAL_FILES_URL:-}LANG:${LANG:-en_US.UTF-8}LC_ALL:${LC_ALL:-en_US.UTF-8}PYTHONIOENCODING:${PYTHONIOENCODING:-utf-8}LOG_LEVEL:${LOG_LEVEL:-INFO}LOG_FILE:${LOG_FILE:-/app/logs/server.log}LOG_FILE_MAX_SIZE:${LOG_FILE_MAX_SIZE:-20}LOG_FILE_BACKUP_COUNT:${LOG_FILE_BACKUP_COUNT:-5}LOG_DATEFORMAT:${LOG_DATEFORMAT:-%Y-%m-%d%H:%M:%S}# LOG_TZ: ${LOG_TZ:-UTC}#时区TZ: Asia/Shanghai LOG_TZ: Asia/Shanghai# LANG: zh_CN.UTF-8# LC_ALL: zh_CN.UTF-8services:# API serviceapi: image: langgenius/dify-api:1.8.1 restart: always environment:# Use the shared environment variables.: *shared-api-worker-env# Startup mode, api starts the API server.MODE: api SENTRY_DSN:${API_SENTRY_DSN:-}SENTRY_TRACES_SAMPLE_RATE:${API_SENTRY_TRACES_SAMPLE_RATE:-1.0}SENTRY_PROFILES_SAMPLE_RATE:${API_SENTRY_PROFILES_SAMPLE_RATE:-1.0}PLUGIN_REMOTE_INSTALL_HOST:${EXPOSE_PLUGIN_DEBUGGING_HOST:-localhost}PLUGIN_REMOTE_INSTALL_PORT:${EXPOSE_PLUGIN_DEBUGGING_PORT:-5003}PLUGIN_MAX_PACKAGE_SIZE:${PLUGIN_MAX_PACKAGE_SIZE:-52428800}INNER_API_KEY_FOR_PLUGIN:${PLUGIN_DIFY_INNER_API_KEY:-QaHbTe77CtuXmsfyhR7vRjI/XbV1AaFy691iykGDv2Jvy0/eAh8Y1}#时区TZ: Asia/Shanghai LOG_TZ: Asia/Shanghai depends_on: db: condition: service_healthy redis: condition: service_started volumes:# Mount the storage directory to the container, for storing user files.- ./volumes/app/storage:/app/api/storage#时区- ./logs/api:/app/logs - /etc/localtime:/etc/localtime:ro - /etc/timezone:/etc/timezone:ro networks: - ssrf_proxy_network - defaultworker: image: langgenius/dify-api:1.8.1 restart: always environment:# Use the shared environment variables.: *shared-api-worker-env# Startup mode, worker starts the Celery worker for processing the queue.MODE: worker SENTRY_DSN:${API_SENTRY_DSN:-}SENTRY_TRACES_SAMPLE_RATE:${API_SENTRY_TRACES_SAMPLE_RATE:-1.0}SENTRY_PROFILES_SAMPLE_RATE:${API_SENTRY_PROFILES_SAMPLE_RATE:-1.0}PLUGIN_MAX_PACKAGE_SIZE:${PLUGIN_MAX_PACKAGE_SIZE:-52428800}INNER_API_KEY_FOR_PLUGIN:${PLUGIN_DIFY_INNER_API_KEY:-QaHbTe77CtuXmsfyhR7vRjI/XbV1AaFy691iykGDv2Jvy0/eAh8Y1}#时区TZ: Asia/Shanghai LOG_TZ: Asia/Shanghai depends_on: db: condition: service_healthy redis: condition: service_started volumes:# Mount the storage directory to the container, for storing user files.- ./volumes/app/storage:/app/api/storage#时区- ./logs/worker:/app/logs - /etc/localtime:/etc/localtime:ro - /etc/timezone:/etc/timezone:ro networks: - ssrf_proxy_network - defaultworker_beat: image: langgenius/dify-api:1.8.1 restart: always environment:# Use the shared environment variables.: *shared-api-worker-env# Startup mode, worker_beat starts the Celery beat for scheduling periodic tasks.MODE: beat#时区TZ: Asia/Shanghai LOG_TZ: Asia/Shanghai depends_on: db: condition: service_healthy redis: condition: service_started#时区volumes: - ./logs/worker:/app/logs - /etc/localtime:/etc/localtime:ro - /etc/timezone:/etc/timezone:ro networks: - ssrf_proxy_network - defaultdb: image: postgres:15-alpine restart: always ports: -5432:5432environment: POSTGRES_USER:${POSTGRES_USER:-postgres}POSTGRES_PASSWORD:${POSTGRES_PASSWORD:-difyai123456}POSTGRES_DB:${POSTGRES_DB:-dify}PGDATA:${PGDATA:-/var/lib/postgresql/data/pgdata}#时区TZ: Asia/Shanghai# -c log_timezoneAsia/Shanghai# -c timezoneAsia/Shanghaicommand:postgres-cmax_connections${POSTGRES_MAX_CONNECTIONS:-100}-cshared_buffers${POSTGRES_SHARED_BUFFERS:-128MB}-cwork_mem${POSTGRES_WORK_MEM:-4MB}-cmaintenance_work_mem${POSTGRES_MAINTENANCE_WORK_MEM:-64MB}-ceffective_cache_size${POSTGRES_EFFECTIVE_CACHE_SIZE:-4096MB}-clog_timezoneAsia/Shanghai-ctimezoneAsia/Shanghaivolumes: - ./volumes/db/data:/var/lib/postgresql/data# 时区- /etc/localtime:/etc/localtime:ro - /etc/timezone:/etc/timezone:ro healthcheck: test:[CMD,pg_isready,-h,db,-U,${PGUSER:-postgres},-d,${POSTGRES_DB:-dify},]interval: 1s timeout: 3s retries:60四、重新启动D:\dify-main\dify\docker目录下的cmd 删除dockercompose-pdify down 重启dockercompose-pdify-8001 up-d-pdify-8001是自定义名字 因为这个目录在doceker不自定义名字就会成为docker的容器名这样一方面好分辨一方面好管理看0.0.0.0:5432-5432/tcp, [::]:5432-5432/tcp 是不是映射出来看效果主机 localhost 端口5432数据库 dify 用户名 postgres 密码 difyai123456 这是默认的五、新增在PostgreSQL导出的知识库不知道小伙伴们有没有试过我既然在dify知识库当中改了多变和我本身上传的以及有多出不通用了但是我们下载就会显示下载失败如图所以该问题解决如何导出命令总览# 1. 进入容器dockerexec-itdocker-db_postgres-1bash# 2. 直接连接 dify 数据库psql-Upostgres-ddify#3. 查看数据库SELECT datname FROM pg_database;# 4. 查看知识库记住要到导出的知识库idSELECT id, name, created_at FROM datasets;# 5. 导出csv格式\copy(SELECT ds.id, ds.document_id, ds.position, ds.content, d.name as document_name, d.dataset_id FROM document_segments ds JOIN documents d ON ds.document_idd.id WHERE d.dataset_idba81c151-a78d-4781-9d63-39dab277c78f)TO/tmp/dify_segments_export.csvWITH CSV HEADER;# 6. 退出 psql\q# 7. 退出容器exit# 7. 复制到宿主机dockercpdocker-db_postgres-1:/tmp/export.csv.详细步骤1.查看正在运行的容器dockerps2.进入 PostgreSQL 容器并连接数据库dockerexec-itdocker-db_postgres-1bash会输出如(base)xxxxAIServer:~$dockerexec-itdocker-db_postgres-1bash4c4f53ee1b8d:/# SELECT id, name, created_at FROM datasets;这就是以及进来了3.进入容器后连接 Dify 数据库psql-Upostgres-ddify注意一下前缀变成dify才是成功进去 4c4f53ee1b8d:/# psql -U postgres -d difypsql(15.15)Typehelpforhelp.dify#4.查看数据库SELECT datname FROM pg_database;输出如postgres# SELECT datname FROM pg_database;datname ------------- postgres dify template1 template0 dify_plugin(5rows)5.查看所有知识库找到要导出的 IDSELECT id, name, created_at FROM datasets;输出如我们需要复制需要导出的这个iddify# SELECT id, name, created_at FROM datasets;id|name|created_at --------------------------------------------------------------------------------------------- e0330892-fdb0-46c6-8dbd-c9f4806bd8c4|xxxx1|2026-04-20 09:18:34 0c9f4041-702e-4f43-8e1d-a7078e8c7c7c|xxxx2|2026-04-10 09:10:35 f7a92af0-de3a-4064-8db4-b3bbd9918177|xxxx3|2026-04-22 02:12:18 7bc2e735-bb13-4efd-862e-97c67475a1e2|xxxx4|2026-03-17 05:41:19 ba81c151-a78d-4781-9d63-39dab277c78f|xxxx5|2026-04-20 09:07:16 385a5d35-208c-4c31-8270-cf27f8576838|xxxx6|2026-04-15 07:15:52 ded5f76a-2acf-4a6d-9cf6-3e170c455711|xxxx7|2026-04-15 07:15:34(7rows)6.执行导出命令我这是导出的csv\copy(SELECT ds.id, ds.document_id, ds.position, ds.content, d.name as document_name, d.dataset_id FROM document_segments ds JOIN documents d ON ds.document_idd.id WHERE d.dataset_idba81c151-a78d-4781-9d63-39dab277c78f)TO/tmp/dify_segments_export.csvWITH CSV HEADER;会输出一个 COPY xxx7.退出退出 psql\q 退出容器exit8.复制到宿主机当前目录dockercpdocker-db_postgres-1:/tmp/dify_segments_export.csv.文件打开之后是这样的content是我们的分段之后每一条代表每一个分段之后使用的话使用python或者其他工具进行处理一下就可以总结因为很多人用difyragflow配合但是因为端口的情况下导致启动失败所以建议大家还是重命名比如我的命名方式为项目名端口号这是在docker容器里面也是改后的名字在修改其他端口号就可以保证不会出现问题

相关新闻