dify的docker服务请求内网服务器遇到的问题
接上一篇文章: https://www.cnblogs.com/neozheng/p/18400589
我有一台 10.xxx.20.162 的内网服务器运行着 dify 的 docker compose 服务,又起了一台 10.xxx.41.11 的内网服务器用来运行 ollama 大模型。
我是通过 手动的方式安装的 ollama,在运行ollama的时候遇到一个问题: ollama 只监听了 `127.0.0.1` 的地址。经过查询得知,要想把监听地址改成 `0.0.0.0`,需要新建ollama的配置文件并通过 `systemctl` 的方式启动。但我的服务器用 systemctl 启动 ollama 又一直失败,所以只能用 `ollama serve` 的方式启动,这种方式启动的话,可以先在环境变量中配置好ollama的监听地址,如下:
export OLLAMA_HOST=0.0.0.0:11434
通过这种方式就能在 10.xxx.20.162 的内网服务器 成功访问 10.xxx.41.11 的ollama服务了,如下:
curl http://localhost:11434/api/generate -d '{ "model": "llama3.2", "prompt":"Why is the sky blue?" }'
但在公司电脑的浏览器上访问10.xxx.20.162 上的dify服务时, ollama 的模型在dify中一直添加失败。 最后意识到应该是 代理的问题,就对 docker-compose.yaml做了如下修改:
... services: # API service api: image: langgenius/dify-api:0.7.1 restart: always environment: # Use the shared environment variables. <<: *shared-api-worker-env # Startup mode, 'api' starts the API server. MODE: api # 设置代理 HTTP_PROXY: http://my-proxy.com:3128 HTTPS_PROXY: http://my-proxy.com:3128 # 不走代理的情况: 把 weaviate 服务添加到里面 NO_PROXY: localhost,127.0.0.1,weaviate,10.xxx.41.11 depends_on: - db - redis volumes: # Mount the storage directory to the container, for storing user files. - ./volumes/app/storage:/app/api/storage networks: - ssrf_proxy_network - default # worker service # The Celery worker for processing the queue. worker: image: langgenius/dify-api:0.7.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 # 设置代理 HTTP_PROXY: http://my-proxy.com:3128 HTTPS_PROXY: http://my-proxy.com:3128 # 不走代理的情况: 把 weaviate 服务添加到里面 NO_PROXY: localhost,127.0.0.1,weaviate,10.xxx.41.11 depends_on: - db - redis volumes: # Mount the storage directory to the container, for storing user files. - ./volumes/app/storage:/app/api/storage networks: - ssrf_proxy_network - default # dify 的其他服务就不需要配置代理的设置了 ...
通过在 NO_PROXY 中添加 10.xxx.41.11,就表示访问它的时候不要走代理。 这样子,在dify页面上添加 ollama模型失败的问题就解决了
Code your future.