bisheng系列(一)- 本地部署(Docker)
目录
一、导读
二、说明
1、镜像说明
2、本节内容
三、docker部署
1、克隆代码
2、运行镜像
3、可能的错误信息
四、页面测试
1、注册用户
2、登陆成功
3、添加模型
一、导读
环境:Ubuntu 24.04、Windows 11、WSL 2、Python 3.10 、bisheng 1.1.1
背景:需要bisheng二开商用,故而此处进行本地部署,便于后期调试开发
时间:20250519
说明:根据官方的教程,进行docker部署并登陆成功
注意:本节仅使用docker部署,后面会说明前后端代码运行部署,其他使用docker部署。其中用到的端口较多,请确保端口未处于使用状态
git代码地址:BISHENG github地址链接
官方文档地址:BISHENG - 私有化部署
二、说明
1、镜像说明
bisheng的docker镜像共有九个, 分别如下:
序号 | 镜像组件名称 | 镜像组件版本 |
---|---|---|
1 | backed | 1.1.1 |
2 | frontend | 1.1.1 |
3 | redis | 7.0.4 |
4 | MySQL | 8.0 |
5 | milvus | 2.3.3 |
6 | minio | 2023-03-20T20-16-18Z |
7 | onlyoffice | 7.1.1 |
8 | elasticsearch | 8.12.0 |
9 | etcd | 3.5.5 |
上述内容源于下图
2、本节内容
本节内容计划实现的是:根据官方文档,实现docker部署并运行
docker部署使用Ubuntu(Ubuntu已安装docker),后期的前后端分离部署使用open Euler
由于官方1.2.0版本(dev)支持python >=3.10,而1.1.1版本支持python >= 3.9,所以使用Open Euler 23.03版本,该版本默认的python版本为3.10
三、docker部署
docker安装参考:Linux子系统安装docker-engine,国内镜像_engine如何在linux安装-CSDN博客
1、克隆代码
# 如果系统中有git命令,可以直接下载毕昇代码
git clone https://github.com/dataelement/bisheng.git
# 进入安装目录
cd bisheng/docker# 如果系统没有没有git命令,可以下载毕昇代码zip包
wget https://github.com/dataelement/bisheng/archive/refs/heads/main.zip
# 解压并进入安装目录
unzip main.zip && cd bisheng-main/docker
2、运行镜像
docker-compose up -d
此时会报错,如下:
jack@Laptop-L14-gen4:~/bisheng-blog/bisheng/docker/bisheng-main/docker$ docker-compose up -d
ERROR: The Compose file './docker-compose.yml' is invalid because:
services.office.environment.JWT_ENABLED contains false, which is an invalid type, it should be a string, number, or a null
修改docker-com文件的48行,在false上加上双引号如下:
46 environment:47 TZ: Asia/Shanghai48 JWT_ENABLED: "false"
再次运行,出现如下界面:
3、可能的错误信息
jack@Laptop-L14-gen4:~/bisheng-blog/bisheng/docker$ docker-compose up -d
Recreating 5be896b66630_bisheng-mysql ...
Recreating 9f92111be526_milvus-minio ...
Recreating 70b6a9c7768d_milvus-etcd ...
Recreating 0ff268aad0df_bisheng-office ...
Recreating 76538f98c046_bisheng-redis ...
Recreating d0f47f49074d_bisheng-es ...ERROR: for 5be896b66630_bisheng-mysql 'ContainerConfig'ERROR: for 9f92111be526_milvus-minio 'ContainerConfig'ERROR: for 70b6a9c7768d_milvus-etcd 'ContainerConfig'ERROR: for 0ff268aad0df_bisheng-office 'ContainerConfig'ERROR: for 76538f98c046_bisheng-redis 'ContainerConfig'ERROR: for d0f47f49074d_bisheng-es 'ContainerConfig'ERROR: for mysql 'ContainerConfig'ERROR: for minio 'ContainerConfig'ERROR: for etcd 'ContainerConfig'ERROR: for office 'ContainerConfig'ERROR: for redis 'ContainerConfig'ERROR: for elasticsearch 'ContainerConfig'
Traceback (most recent call last):File "/usr/bin/docker-compose", line 33, in <module>sys.exit(load_entry_point('docker-compose==1.29.2', 'console_scripts', 'docker-compose')())^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^File "/usr/lib/python3/dist-packages/compose/cli/main.py", line 81, in maincommand_func()File "/usr/lib/python3/dist-packages/compose/cli/main.py", line 203, in perform_commandhandler(command, command_options)File "/usr/lib/python3/dist-packages/compose/metrics/decorator.py", line 18, in wrapperresult = fn(*args, **kwargs)^^^^^^^^^^^^^^^^^^^File "/usr/lib/python3/dist-packages/compose/cli/main.py", line 1186, in upto_attach = up(False)^^^^^^^^^File "/usr/lib/python3/dist-packages/compose/cli/main.py", line 1166, in upreturn self.project.up(^^^^^^^^^^^^^^^^File "/usr/lib/python3/dist-packages/compose/project.py", line 697, in upresults, errors = parallel.parallel_execute(^^^^^^^^^^^^^^^^^^^^^^^^^^File "/usr/lib/python3/dist-packages/compose/parallel.py", line 108, in parallel_executeraise error_to_reraiseFile "/usr/lib/python3/dist-packages/compose/parallel.py", line 206, in producerresult = func(obj)^^^^^^^^^File "/usr/lib/python3/dist-packages/compose/project.py", line 679, in doreturn service.execute_convergence_plan(^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^File "/usr/lib/python3/dist-packages/compose/service.py", line 579, in execute_convergence_planreturn self._execute_convergence_recreate(^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^File "/usr/lib/python3/dist-packages/compose/service.py", line 499, in _execute_convergence_recreatecontainers, errors = parallel_execute(^^^^^^^^^^^^^^^^^File "/usr/lib/python3/dist-packages/compose/parallel.py", line 108, in parallel_executeraise error_to_reraiseFile "/usr/lib/python3/dist-packages/compose/parallel.py", line 206, in producerresult = func(obj)^^^^^^^^^File "/usr/lib/python3/dist-packages/compose/service.py", line 494, in recreatereturn self.recreate_container(^^^^^^^^^^^^^^^^^^^^^^^^File "/usr/lib/python3/dist-packages/compose/service.py", line 612, in recreate_containernew_container = self.create_container(^^^^^^^^^^^^^^^^^^^^^^File "/usr/lib/python3/dist-packages/compose/service.py", line 330, in create_containercontainer_options = self._get_container_create_options(^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^File "/usr/lib/python3/dist-packages/compose/service.py", line 921, in _get_container_create_optionscontainer_options, override_options = self._build_container_volume_options(^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^File "/usr/lib/python3/dist-packages/compose/service.py", line 960, in _build_container_volume_optionsbinds, affinity = merge_volume_bindings(^^^^^^^^^^^^^^^^^^^^^^File "/usr/lib/python3/dist-packages/compose/service.py", line 1548, in merge_volume_bindingsold_volumes, old_mounts = get_container_data_volumes(^^^^^^^^^^^^^^^^^^^^^^^^^^^File "/usr/lib/python3/dist-packages/compose/service.py", line 1579, in get_container_data_volumescontainer.image_config['ContainerConfig'].get('Volumes') or {}~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^
KeyError: 'ContainerConfig'
如出现上述错误信息,查看是否存在容器(运行与停止的),如下:
jack@Laptop-L14-gen4:~/bisheng-blog/bisheng/docker$ docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
75bcb85e2b89 dataelement/bisheng-frontend:v1.1.1 "/docker-entrypoint.…" 40 hours ago Exited (0) 11 minutes ago bisheng-frontend
385f2dba3966 dataelement/bisheng-backend:v1.1.1 "sh entrypoint.sh" 40 hours ago Exited (137) 11 minutes ago bisheng-backend
640ad23afa2b milvusdb/milvus:v2.3.3 "/tini -- milvus run…" 40 hours ago Exited (0) 11 minutes ago milvus-standalone
9f92111be526 minio/minio:RELEASE.2023-03-20T20-16-18Z "/usr/bin/docker-ent…" 40 hours ago Exited (0) 11 minutes ago 9f92111be526_milvus-minio
70b6a9c7768d quay.io/coreos/etcd:v3.5.5 "etcd -advertise-cli…" 40 hours ago Exited (0) 11 minutes ago 70b6a9c7768d_milvus-etcd
76538f98c046 redis:7.0.4 "docker-entrypoint.s…" 40 hours ago Exited (0) 11 minutes ago 76538f98c046_bisheng-redis
5be896b66630 mysql:8.0 "docker-entrypoint.s…" 40 hours ago Exited (0) 11 minutes ago 5be896b66630_bisheng-mysql
0ff268aad0df onlyoffice/documentserver:7.1.1 "/app/ds/run-documen…" 40 hours ago Exited (137) 11 minutes ago 0ff268aad0df_bisheng-office
d0f47f49074d bitnami/elasticsearch:8.12.0 "/opt/bitnami/script…" 40 hours ago Exited (143) 11 minutes ago d0f47f49074d_bisheng-es
5257cf9b2426 qdrant/qdrant "./entrypoint.sh" 3 weeks ago Exited (255) 2 weeks ago 0.0.0.0:6333-6334->6333-6334/tcp, :::6333-6334->6333-6334/tcp distracted_lamport
b28179c3b79b qdrant/qdrant "./entrypoint.sh" 3 weeks ago Exited (255) 3 weeks ago 0.0.0.0:6333-6334->6333-6334/tcp, :::6333-6334->6333-6334/tcp bold_beaver
b00d21f614f7 hello-world "/hello" 3 weeks ago Exited (0) 3 weeks ago objective_khayyam
114b2a816fae ubuntu1:8080 "/bin/sh -c 'npm i &…" 7 weeks ago Exited (255) 7 weeks ago 0.0.0.0:8080->8080/tcp, :::8080->8080/tcp light_house
该问题出自容器ID重复(bisheng的9个容器ID始终不变),当启动后,存在停止的容器,导致docker-compose启动镜像失败
在当前目录下执行:
docker-compose down
该命令实现了关闭容器并删除的功能
四、页面测试
1、注册用户
地址:localhost:3001
2、登陆成功
3、添加模型
五、结语
1、小结
本文完全按照官方文档进行部署,难度基本不存在。因部分bug存在,以及改内容是下一节的基础,故而此处进行了简单记录
2、后续内容
下一节想要实现的功能如下:
1、代码运行bisheng后端,使用vscode实现
2、前端代码使用nginx运行
3、其余组件使用docker-compose运行
这样就可以实现真实的开发环境
相关文章:

bisheng系列(一)- 本地部署(Docker)
目录 一、导读 二、说明 1、镜像说明 2、本节内容 三、docker部署 1、克隆代码 2、运行镜像 3、可能的错误信息 四、页面测试 1、注册用户 2、登陆成功 3、添加模型 一、导读 环境:Ubuntu 24.04、Windows 11、WSL 2、Python 3.10 、bisheng 1.1.1 背景…...

如何用Python批量解压ZIP文件?快速解决方案
如何用Python批量解压ZIP文件?快速解决方案 文章目录 **如何用Python批量解压ZIP文件?快速解决方案**代码结果详细解释 话不多说,先上干货!!! 代码 import os import zipfiledef unzip_file(dir_path: str…...

DriveGenVLM:基于视觉-语言模型的自动驾驶真实世界视频生成
《DriveGenVLM: Real-world Video Generation for Vision Language Model based Autonomous Driving》2024年8月发表,来自哥伦比亚大学的论文。 自动驾驶技术的进步需要越来越复杂的方法来理解和预测现实世界的场景。视觉语言模型(VLM)正在成…...
JavaScript 中的五种继承方式进行深入对比
文章目录 前言JavaScript 五种继承方式对比原型链继承构造函数继承组合继承寄生组合继承ES6 class extends 继承五种继承方式对比表前言 对 JavaScript 中的五种继承方式进行深入对比:原型链继承、构造函数继承、组合继承、寄生组合继承、以及 ES6 的 class extends。 内容将…...

企业标准信息公共服务平台已开放标准通编辑器访问入口
标准通 数字化标准编辑器 专业、高效、便捷 企业标准信息公共服务平台 近日,企业标准信息公共服务平台已开放标准通编辑器访问入口,可进入官网指定版块使用! 核心功能亮点 解决企业痛点 传统标准编制,需反复核对格式、逐条…...
[Linux]安装吧!我的软件包管理器!
一、常见安装方式 在 Linux 中,有 3 种常见的软件安装方式: (1)yam、apt (2).rpm 安装包安装 (3)源码安装 二、什么是软件包 在 Linux 下安装软件,通常的办法是下载…...
Spring Boot 与 RabbitMQ 的深度集成实践(三)
高级特性实现 消息持久化 在实际的生产环境中,消息的可靠性是至关重要的。消息持久化是确保 RabbitMQ 在发生故障或重启后,消息不会丢失的关键机制。它涉及到消息、队列和交换机的持久化配置。 首先,配置队列持久化。在创建队列时…...

进阶-数据结构部分:1、数据结构入门
飞书文档https://x509p6c8to.feishu.cn/wiki/HRLkwznHiiOgZqkqhLrcZNqVnLd 一、存储结构 顺序存储 链式存储 二、常用数据结构 2.1、栈 先进后出 场景: 后退/前进功能:网页浏览器中的后退和前进按钮可以使用栈来实现。在浏览网页时,每次…...

React 19中useContext不需要Provider了。
文章目录 前言一、React 19中useContext移除了Provider?二、使用步骤总结 前言 在 React 19 中,useContext 的使用方式有所更新。开发者现在可以直接使用 作为提供者,而不再需要使用 <Context.Provider>。这一变化简化了代码结构&…...

Json schema校验json字符串(networknt/json-schema-validator库)
学习链接 json-schema官网 - 英文 jsonschemavalidator 可在线校验网站 networknt的json-schema-validator github地址 networknt的json-schema-validator 个人gitee地址 - 里面有md文档说明和代码示例 JSON Schema 入门指南:如何定义和验证 JSON 数据结构 JS…...

交易所开发:构建功能完备的金融基础设施全流程指南
交易所开发:构建功能完备的金融基础设施全流程指南 ——从技术架构到合规安全的系统性解决方案 一、开发流程:从需求分析到运维优化 开发一款功能完备的交易所需要遵循全生命周期管理理念,涵盖市场定位、技术实现、安全防护和持续迭代四大阶…...
Windows_Vs2022 C#语言开发环境构建
Windows_VisualStudio2022 C#语言开发环境构建 一、C#语言简介历史背景语言特点应用领域开发工具未来发展方向 二、Visual Studio 2022(一)开发语言支持(二)主要功能(三)适用场景(四)…...

Axure疑难杂症:统计分析页面引入Echarts示例动态效果
亲爱的小伙伴,在您浏览之前,烦请关注一下,在此深表感谢! Axure产品经理精品视频课已登录CSDN可点击学习https://edu.csdn.net/course/detail/40420 课程主题:统计分析页面引入Echarts示例动态效果 主要内容:echart示例引入、大小调整、数据导入 应用场景:统计分析页面…...

展锐Android14及更新版本split_build编译方法
更改split_build.py文件内容后按照下面方法编译: zip -r sys/vendor/sprd/release/split_build.zip sys/vendor/sprd/release/split_build/ rm -r sys/vendor/sprd/release/split_build/ cp -r vnd/vendor/sprd/release/split_build/ sys/vendor/sprd/release/cd s…...

青少年ctf平台应急响应-应急响应2
题目: 当前服务器被创建了一个新的用户,请提交新用户的用户名,得到的结果 ssh rootchallenge.qsnctf.com -p 30327 这个命令用于通过 SSH 协议连接到指定的远程服务器。具体解释如下: ssh:这是在 Unix-like 系统中…...

k8s监控方案实践补充(二):使用kube-state-metrics获取资源状态指标
k8s监控方案实践补充(二):使用kube-state-metrics获取资源状态指标 文章目录 k8s监控方案实践补充(二):使用kube-state-metrics获取资源状态指标一、Metrics Server简介二、kube-state-metrics实战部署1. 创…...
WEB安全--SQL注入--Oracle注入
一、Oracle知识点了解 1.1、系统变量与表 版本号:SELECT * FROM V$VERSION 用户名:USER、SYS_CONTEXT(USERENV,SESSION_USER) 库名:ALL_USERS、USER_USERS、DBA_USERS 表名:ALL_TABLES、DBA_TABLES、USER_TABLES 字段名&…...

基于SpringBoot的小型民营加油站管理系统
作者:计算机学姐 开发技术:SpringBoot、SSM、Vue、MySQL、JSP、ElementUI、Python、小程序等,“文末源码”。 专栏推荐:前后端分离项目源码、SpringBoot项目源码、Vue项目源码、SSM项目源码、微信小程序源码 精品专栏:…...
每日一道leetcode(新学数据结构版)
208. 实现 Trie (前缀树) - 力扣(LeetCode) 题目 Trie(发音类似 "try")或者说 前缀树 是一种树形数据结构,用于高效地存储和检索字符串数据集中的键。这一数据结构有相当多的应用情景,例如自动…...
深入掌握MyBatis:连接池、动态SQL、多表查询与缓存
文章目录 一、MyBatis连接池1.1 连接池的作用1.2 MyBatis连接池分类 二、动态SQL2.1 if标签2.2 where标签2.3 foreach标签2.4 SQL片段复用 三、多表查询3.1 多对一查询(一对一)3.2 一对多查询 四、延迟加载4.1 立即加载 vs 延迟加载4.2 配置延迟加载 五、…...
Bootstrap 5 容器与网格系统详解
一、容器 - Bootstrap的基础构建块 Bootstrap需要容器元素来包裹网站内容,提供两种主要选择: .container - 固定宽度并支持响应式布局.container-fluid - 100%宽度,占据全部视口 1. 固定宽度容器 .container创建固定宽度的响应式页面&…...
Java反射机制详解:原理、应用与实战
一、反射机制概述 Java反射(Reflection)是Java语言的一个强大特性,它允许程序在运行时(Runtime)获取类的信息并操作类或对象的属性、方法等。反射机制打破了Java的封装性,但也提供了极大的灵活性。 反射的核心思想:在运行时而非编译时动态获…...

技术架构缺乏灵活性,如何应对变化需求?
技术架构缺乏灵活性会导致企业在面临市场变化、用户需求演化或新技术出现时难以及时响应,直接影响产品更新速度与竞争力。要有效应对变化需求,需要从引入模块化架构设计、推动微服务拆分、加强架构治理与决策机制、构建中台与平台化能力等方面系统推进。…...
【AI时代】Java程序员大模型应用开发详细教程(上)
目录 一、大模型介绍 1. 大模型介绍 1.1 什么是大模型 1.2 技术储备 1.3 大模型的分类 2. 入门案例 3.Token的介绍 二、提示词工程 1. 好玩的提示词案例 1.1 翻译软件 1.2 让Deepseek绘画 1.3 生成数据 1.4 代码生成 2. 提示词介绍 3. Prompt Engineering最佳实…...

虚拟网络编辑器
vmnet1 仅主机模式 hostonly 功能:虚拟机只能和宿主机通过vmnet1通信,不可连接其他网络(包括互联网) vmnet8 地址转换模式 NAT 功能:虚拟机可以和宿主通过vmnet8通信,并且可以连接其他网络,但是…...
102. 二叉树的层序遍历递归法:深度优先搜索的巧妙应用
二叉树的层序遍历是一种经典的遍历方式,它要求按层级逐层访问二叉树的节点。通常我们会使用队列来实现层序遍历,但递归法也是一种可行且有趣的思路。本文将深入探讨递归法解决二叉树层序遍历的核心难点,并结合代码和模拟过程进行详细讲解。 …...
Github 2025-05-16 Java开源项目日报 Top9
根据Github Trendings的统计,今日(2025-05-16统计)共有9个项目上榜。根据开发语言中项目的数量,汇总情况如下: 开发语言项目数量Java项目9Netty:异步事件驱动的网络应用程序框架 创建周期:5043 天开发语言:Java协议类型:Apache License 2.0Star数量:33219 个Fork数量:…...
MinerU安装(pdf转markdown、json)
在Windows上安装MinerU,参考以下几个文章,可以成功安装,并使用GPU解析。 整体安装教程: MinerU本地化部署教程——一款AI知识库建站的必备工具 MinerU本地化部署可视化界面-CSDN博客 其中安装conda的教程: 一步步教…...
Java卡与SSE技术融合实现企业级安全实时通讯
简介 在数字化转型浪潮中,安全与实时数据传输已成为金融、物联网等高安全性领域的核心需求。本文将深入剖析东信和平的Java卡权限分级控制技术与浪潮云基于SSE的大模型数据推送技术,探索如何将这两项创新技术进行融合,构建企业级安全实时通讯系统。通过从零到一的开发步骤,…...

第31讲 循环缓冲区与命令解析
串口在持续接收数据时容易发生数据黏包(先接收的数据尚未被处理,后面的数据已经将内存覆盖)的情况,循环缓冲区的本质就是将串口接受到的数据马上拷贝到另外一块内存之中。为了避免新来的数据覆盖掉尚未处理的数据,一方…...