这两天老C在家一直莫名烦躁,为啥?因为平时用的好好的dify突然就登录不上了!随着家里本地部署的应用越来越多,并且很多都是使用docker等容器方式进行部署,服务之间的端口冲突会越来越严重!是时候给家庭网络环境中做个大致的规划了,30001–39999端口区间给docker内的各服务端口使用;20001–29999端口区间给家庭网络对外的服务端口使用。
Dify的网络具体设置:
因为在本地Windows11环境中折腾部署了SGLang的docker环境,结果发现原先用的好好的Dify的docker环境中的nginx的端口(80和443端口)冲突了,Dify服务本身默认的访问端口80已经被占用,就只能调整Dify的端口。Dify创建的工作流对外发布的端口默认是3000。
在WSL环境中的“~/dify/docker/”目录下,修改配置文件.env;用“ls -a”命令才能看到前面加点的隐藏文件。
sudo vi /home/leason/dify/docker/.env
修改配置文件之前记得先备份
备份的命令如下(Ubuntu环境记得添加sudo):
sudo cp .env .env.20250625.dify1-4-3.bak
sudo cp docker-compose.yaml docker-compose.yaml.v1.4.3-20250625.bak
说明:“v1.4.3-20250625”这个部分按你自己的想法去命名,建议把当前版本号和日期都加上,这样当有一天希望回退的时候,能够快速找到希望返回的时间和版本。
修改Dify的docker内部端口
找到NGINX_PORT和NGINX_SSL_PORT配置项,默认的值是80和443,这两个配置项是dify在我们的docker内部的端口,这两个值可以考虑不变,也可以同步调整,虽然每个应用的docker环境都是相互隔离的,但专门调整后便于辨识,原本希望设置docker内部服务端口分别为:31280和31443,但最终担心修改出问题,所以docker内部端口未修改,保持原样80和443(发现老C真是一个“纠结的天秤座”)。
修改Dify对外的端口
继续找EXPOSE_NGINX_PORT和EXPOSE_NGINX_SSL_PORT配置项,默认值也是80和443,这两个配置项是dify对外映射的两个端口,这两个值必须更改,我也改成了2**80和2*443;
修改Dify生成的工作流对外服务端口
找到SERVICE_API_URL和APP_WEB_URL两个配置项:默认是为空,现在我们要在“=”号后面填写上ip:port (这就是Dify工作流的对外服务地址,填写你们自己设定的不同的port)【此处是我本机通过绑定MAC地址固定的内网IP:192.168.*.*:2***0】
完成上述修改后,需要重启Dify服务以使更改生效:
sudo docker compose down
sudo docker compose up -d
重启后在浏览器里直接通过(http://固定IP:2**80/apps),访问成功。