图龙网络科技

问答社区

原创作者: 图龙网络科技 发布时间: 2023-09-23 229.8K 人阅读

Dify构建智能语言大模型+单独启动前端 Docker 容器简单粗暴

图龙网络科技 发布于 4个月前 分类:语言模型

在单独开发后端时,可能只需要从源码启动后端服务,而不需要本地构建和启动前端。此时,可以直接通过拉取 Docker 镜像并运行容器的方式启动前端服务。具体步骤如下:

第一种:从 DockerHub 拉取前端服务的 Docker 镜像:
复制
docker run -it -p 3000:3000 -e CONSOLE_URL=http://127.0.0.1:5001 -e APP_URL=http://127.0.0.1:5001 langgenius/dify-web:latest
从源代码构建 Docker 镜像
构建前端镜像:

复制
cd web && docker build . -t dify-web
启动前端镜像

复制
docker run -it -p 3000:3000 -e CONSOLE_URL=http://127.0.0.1:5001 -e APP_URL=http://127.0.0.1:5001 dify-web
当控制台域和 Web 应用程序域不同时,可以分别设置 CONSOLE_URL 和 APP_URL。

要在本地访问,您可以访问http://127.0.0.1:3000。

第二种:克隆化系统到本地或服务器:
复制
git clone https://github.com/langgenius/dify.git
在启用业务服务之前,我们需要先部署 PostgresSQL / Redis / Weaviate(如果本地没有的话),我们可以使用以下命令启动它们:

复制
cd docker
cp middleware.env.example middleware.env
docker compose -f docker-compose.middleware.yaml up -d
服务器部署
API接口服务

Worker 异步队列消费服务

基础环境的安装:
服务器启动需要Python 3.10.x,建议使用pyenv快速安装Python环境。

要安装其他 Python 版本,请使用 pyenv install。

复制
pyenv install 3.10
要切换到“3.10”Python 环境,请使用以下命令:

复制
pyenv global 3.10
按着这些次序 :
导航到“api”目录:

复制
cd api
复制环境变量配置文件:

复制
cp .env.example .env
生成随机密钥,并替换.env文件中SECRET_KEY的值:

复制
openssl rand -base64 42
sed -i 's/SECRET_KEY=.*/SECRET_KEY=<your_value>/' .env
安装所需的依赖项:

Dify API 服务使用Poetry来管理依赖项。您可以执行poetry shell以激活环境。

复制
poetry env use 3.10
poetry install
执行数据库迁移

执行数据库迁移到最新版本:

复制
poetry shell
flask db upgrade
启动 API 服务器:

复制
flask run --host 0.0.0.0 --port=5001 --debug
输出:

复制
* Debug mode: on
INFO:werkzeug:WARNING: This is a development server. Do not use it in a production deployment. Use a production WSGI server instead.
* Running on all addresses (0.0.0.0)
* Running on http://127.0.0.1:5001
INFO:werkzeug:Press CTRL+C to quit
INFO:werkzeug: * Restarting with stat
WARNING:werkzeug: * Debugger is active!
INFO:werkzeug: * Debugger PIN: 695-801-919
启动 Worker 服务

要使用队列中的异步任务(例如数据集文件导入和数据集文档更新),请按照以下步骤在 Linux 或 macOS 上启动 Worker 服务:

复制
celery -A app.celery worker -P gevent -c 1 --loglevel INFO -Q dataset,generation,mail,ops_trace
如果您使用Windows系统启动Worker服务,请使用以下命令:

复制
celery -A app.celery worker -P solo --without-gossip --without-mingle -Q dataset,generation,mail,ops_trace --loglevel INFO
输出:

复制
-------------- celery@TAKATOST.lan v5.2.7 (dawn-chorus)
--- ***** -----
-- ******* ---- macOS-10.16-x86_64-i386-64bit 2023-07-31 12:58:08
- *** --- * ---
- ** ---------- [config]
- ** ---------- .> app: app:0x7fb568572a10
- ** ---------- .> transport: redis://:**@localhost:6379/1
- ** ---------- .> results: postgresql://postgres:**@localhost:5432/dify
- *** --- * --- .> concurrency: 1 (gevent)
-- ******* ---- .> task events: OFF (enable -E to monitor tasks in this worker)
--- ***** -----
-------------- [queues]
.> dataset exchange=dataset(direct) key=dataset
.> generation exchange=generation(direct) key=generation
.> mail exchange=mail(direct) key=mail

[tasks]
. tasks.add_document_to_index_task.add_document_to_index_task
. tasks.clean_dataset_task.clean_dataset_task
. tasks.clean_document_task.clean_document_task
. tasks.clean_notion_document_task.clean_notion_document_task
. tasks.create_segment_to_index_task.create_segment_to_index_task
. tasks.deal_dataset_vector_index_task.deal_dataset_vector_index_task
. tasks.document_indexing_sync_task.document_indexing_sync_task
. tasks.document_indexing_task.document_indexing_task
. tasks.document_indexing_update_task.document_indexing_update_task
. tasks.enable_segment_to_index_task.enable_segment_to_index_task
. tasks.generate_conversation_summary_task.generate_conversation_summary_task
. tasks.mail_invite_member_task.send_invite_member_mail_task
. tasks.remove_document_from_index_task.remove_document_from_index_task
. tasks.remove_segment_from_index_task.remove_segment_from_index_task
. tasks.update_segment_index_task.update_segment_index_task
. tasks.update_segment_keyword_index_task.update_segment_keyword_index_task

[2023-07-31 12:58:08,831: INFO/MainProcess] Connected to redis://:**@localhost:6379/1
[2023-07-31 12:58:08,840: INFO/MainProcess] mingle: searching for neighbors
[2023-07-31 12:58:09,873: INFO/MainProcess] mingle: all alone
[2023-07-31 12:58:09,886: INFO/MainProcess] pidbox: Connected to redis://:**@localhost:6379/1.
[2023-07-31 12:58:09,890: INFO/MainProcess] celery@TAKATOST.lan ready.
部署前端页面
启动 Web 前端客户端页面服务

基础环境的安装:
要启动 Web 前端服务,您将需要Node.js v18.x (LTS)和NPM 版本 8.xx或Yarn。

安装 NodeJS + NPM

请访问https://nodejs.org/en/download并选择适合您操作系统的安装包,即 v18.x 或更高版本。建议下载稳定版本,默认包含 NPM。

按着这些次序 :
进入网站目录

复制
cd web
安装依赖项。

复制
npm install
配置环境变量。在当前目录下创建一个名为 .env.local 的文件,并从 .env.example 中复制内容。根据你的需要修改这些环境变量的值:

复制
# For production release, change this to PRODUCTION
NEXT_PUBLIC_DEPLOY_ENV=DEVELOPMENT
# The deployment edition, SELF_HOSTED or CLOUD
NEXT_PUBLIC_EDITION=SELF_HOSTED
# The base URL of console application, refers to the Console base URL of WEB service if console domain is
# different from api or web app domain.
# example: http://cloud.dify.ai/console/api
NEXT_PUBLIC_API_PREFIX=http://localhost:5001/console/api
# The URL for Web APP, refers to the Web App base URL of WEB service if web app domain is different from
# console or api domain.
# example: http://udify.app/api
NEXT_PUBLIC_PUBLIC_API_PREFIX=http://localhost:5001/api

# SENTRY
NEXT_PUBLIC_SENTRY_DSN=
NEXT_PUBLIC_SENTRY_ORG=
NEXT_PUBLIC_SENTRY_PROJECT=
构建代码

复制
npm run build
启动网络服务:

复制
npm run start
# or
yarn start
# or
pnpm start
启动成功后终端会输出如下信息:

复制
ready - started server on 0.0.0.0:3000, url: http://localhost:3000
warn - You have enabled experimental feature (appDir) in next.config.js.
warn - Experimental features are not covered by semver, and may cause unexpected or broken application behavior. Use at your own risk.
info - Thank you for testing `appDir` please leave your feedback at https://nextjs.link/app-feedback
访问 Dify
最后访问http://127.0.0.1:3000就可以使用本地部署的Dify了。

0个回复

  • 龙族们都在等待回复

提供中小企业建站高端正版精品系统

正品模板 购买协议