本地在docker中部署了dify,并且也配置好应用,发布后,怎么使用API调用?

  • 作者: 凯哥Java(公众号:凯哥Java)
  • AI相关
  • 时间:2025-10-10 15:55
  • 95人已阅读
简介 背景:在本地docker中已经部署好了dify服务,并且已经在dify中配置好应用,也发布了。现在想使用spring boot调用dify发布应用API。具体怎么操作?怎么获取在dify中已经发布应用的API-key.请参考:本地部署dify,已经发布了,怎么通过API调用呢?怎么获取到对应应用Key?调用dify应用的API,就需要配置对应API信息。#DifyAPI??dify.ap

🔔🔔🔔好消息!好消息!🔔🔔🔔

有需要的朋友👉:联系凯哥 微信号 kaigejava2022

背景:
在本地docker中已经部署好了dify服务,并且已经在dify中配置好应用,也发布了。现在想使用spring  boot调用dify发布应用API。具体怎么操作?

怎么获取在dify中已经发布应用的API-key.请参考:本地部署dify,已经发布了,怎么通过API调用呢?怎么获取到对应应用Key?


调用dify应用的API,就需要配置对应API信息。

# Dify API??
dify.api-key=app-4c0eKALectHp7wz4x8iBCGN2
dify.app-id=nP0ajCL3ZO9xeV14
dify.api-url=http://192.168.8.185:8001/v1/chat-messages

其中api-key:就是怎么获取在dify中已经发布应用的API-key.请参考:本地部署dify,已经发布了,怎么通过API调用呢?怎么获取到对应应用Key?

app-id:就是发布应用后,点击运行按钮:

64ee3733426ef0d2393e10c20c3b2e93.png

打开的页面:
511af998b94b8fea42e011818e95ec9b.png

nP0ajCL3ZO9xeV14这个就是对应应用的app-id;

PS:这个点APP-ID可以不用

api-url:这里有坑,不能直接复制凯哥的。下面详细介绍怎么配置。




因为使用的是docker安装dify的。查看docker:

在docker desktop中如下:

b1076f60d7dbda46f7f23bdbc1204942.png

使用命令:docker ps查看如下:

7d839fcb83d0450b82f23961aedf4a6e.png


从 docker ps 输出中,docker-api-1 容器对应 Dify 的 API 服务。观察其 PORTS 列:

2f9507c4f6c3   langgenius/dify-api:1.9.0   ...   5001/tcp   docker-api-1

可见:

  • 容器内部端口是 5001,但没有映射到宿主机的端口(格式应为 0.0.0.0:宿主机端口->容器端口/tcp,比如 0.0.0.0:8000->5001/tcp)。

问题分析与解决

Docker 容器的端口若不映射到宿主机,外部(如你的 Spring Boot 项目)无法直接访问容器内的 5001 端口。因此需要:

步骤 1:检查 Dify 部署的端口映射配置

找到 Dify 部署时的 docker-compose.yml(或类似编排文件),查看 api 服务的 ports 配置。

正常情况下,Dify API 应配置宿主机端口 -> 容器端口的映射,例如:

services:
  api:
    ports:
      - "8000:5001"  # 宿主机8000端口 映射到 容器内5001端口

因为凯哥使用的是dify的1.9.0.上面这种方式不一定好。修改

比如凯哥docker-compose.yml位置:D:\bbb\dify-1.9.0\docker\docker-compose.yaml及.evn修改

在.evn文件最后添加

# ------------------------------

# API 服务端口映射配置(新增)

# ------------------------------

# 宿主机端口:映射 api 容器的 5001 端口(可根据环境修改,如开发8001、测试8002、生产8003)

EXPOSE_API_PORT=8001

# API 容器内部端口(默认5001,来自 Dify 原有配置,无需修改)

DIFY_PORT=5001

在docker-compose文件中:

9b115a8f066cfe1f2a72b8dfbd3f3446.png

   # 新增:端口映射(宿主机端口:容器端口,变量来自 .env)

    ports:

      - "${EXPOSE_API_PORT}:${DIFY_PORT}"  # 核心:动态映射,无需硬编码

需要注意的是:因为是yml文件,注意格式。也就是缩进

步骤 2:修改配置并重启服务

若 docker-compose.yml 中 api 的 ports 配置缺失或错误,需添加/修正为上述格式,然后重启 Dify 服务:

docker-compose down   # 停止服务
docker-compose up -d  # 重新启动(带端口映射)

步骤 3:确认端口映射生效

再次执行 docker ps | findstr api(Windows)或 docker ps | grep api(Linux/Mac),若看到类似以下输出,说明映射成功:

...   0.0.0.0:8000->5001/tcp   ...   docker-api-1

或者使用:docker ps --format "{{.Names}} {{.Ports}}" | findstr "api"

e567c4cefd53b1c2af7f54ab6ce29db1.png

或者使用docker ps 命令也可以

e3ac38a42ab65ef4417f62b12042b980.png

最终 API 地址

若成功将容器 5001 端口映射到宿主机 8000 端口,且 Dify 宿主机 IP 为 192.168.8.185,则:

dify.api-url=http://192.168.8.185:8000/v1/chat-messages

(若宿主机是本地电脑,也可使用 localhost:8000,即 http://localhost:8000/v1/chat-messages


TopTop