本地在docker中部署了dify,并且也配置好应用,发布后,怎么使用API调用?
- AI相关
- 时间:2025-10-10 15:55
- 95人已阅读
🔔🔔🔔好消息!好消息!🔔🔔🔔
有需要的朋友👉:联系凯哥
背景:
在本地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:就是发布应用后,点击运行按钮:
打开的页面:
nP0ajCL3ZO9xeV14这个就是对应应用的app-id;
PS:这个点APP-ID可以不用
api-url:这里有坑,不能直接复制凯哥的。下面详细介绍怎么配置。
因为使用的是docker安装dify的。查看docker:
在docker desktop中如下:
使用命令:docker ps查看如下:
从 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文件中:
# 新增:端口映射(宿主机端口:容器端口,变量来自 .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"
或者使用docker ps 命令也可以
最终 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
)