onlyoffice9.2.1 docker容器中突破20限制

一、思路

为简化编译流程,我们仅需修改影响连接限制的docservice服务源代码,然后替换已部署的onlyoffice服务中的对应组件。整个编译过程仅需使用pkg打包工具。

具体编译方案如下:

  1. 在linux环境下编译生成Linux-64版本的docservice
  2. 如需编译Linux ARM版本,可在Windows主机上安装Docker Desktop,通过模拟ARM CPU架构在Docker容器内完成编译

以下以linux平台编译linux-64的docservice为例子。

三、具体步骤

(1)下载源代码

其实不需要下载整个document server的代码,下载里面的server代码就可以。代码地址:git clone https://github.com/ONLYOFFICE/server.git

(2)将node.js升级到最新版本

onlyoffice的编译要求是至少18以上。

(3)安装打包工具

npm install -g @yao-pkg/pkg

(4)安装js源代码的依赖包

安装common模块的依赖

进入server源代码的\common\目录(DocService依赖此模块),在命令行运行npm install.

安装DocService模块的依赖

进入server源代码的\DocService\目录,命令行运行npm install

(5)修改源代码

修改\common\sources\commondefines.js

const buildVersion = '9.2.1';

如果你不知道部署的版本号,可以采用以下方式:

查看这部分源代码:http://你已经部署的网站/web-apps/apps/api/documents/api.js

这个文件头有具体的版本号。也可以在服务端查看这个文件,以linux版本服务端为例:/var/www/onlyoffice/documentserver/web-apps/apps/api/documents/api.js

修改\common\sources\constants.js

exports.LICENSE_CONNECTIONS = 20000;//原来是20

exports.LICENSE_USERS = 200;

(7)执行打包

进入源代码目录:\server\DocService,执行命令

pkg . -t node20-linux-x64 --options max_old_space_size=4096 -o docservice

注意:不要漏了 pkg 后面的"."符号,它表示分析当前目录下的package.json文件,自动选择入口文件进行打包。

-t:表示要编译的目标平台,node20表示nodejs的版本,linux表示操作系统,后面还有一个参数是cpu架构,x64和arm64,默认和当前平台相同。

打包过程中有很多warning可以忽略,命令执行输出是:docservice文件,它是一个linux可执行文件。

(8)拉取镜像

(a) sudo docker pull onlyoffice/documentserver

(b) 启动服务

sudo docker run -i -t -d -p 80:80 --restart=always -e JWT_SECRET=my_jwt_secret onlyoffice/documentserver

(c) 备份镜像中的docservice

进入容器切换到/var/www/onlyoffice/documentserver/server/DocService/下备份docservice官方二进制文件

(d)替换docservice

sudo docker cp docservice 容器id:/var/www/onlyoffice/documentserver/server/DocService/

(e)重启docker容器

sudo docker restart 容器id

相关推荐
虎头金猫1 天前
4K 视频总卡在公网带宽?用 N1 + OpenList 把网盘播放链路重新理顺
运维·服务器·网络·python·容器·beautifulsoup·pandas
分布式存储与RustFS1 天前
MinIO 官方 Docker 镜像被移除:依赖它的项目该怎么办
docker·云原生·devops·对象存储·minio·分布式存储
AI职业加油站1 天前
AI智能体应用工程师证书:政策红利下的职业新风口
大数据·运维·人工智能·学习·职场发展
此冬歌咏1 天前
K8s 节点故障实战:优雅驱逐 31 秒,硬故障 331 秒,以及那个永远 Pending 的 Pod
运维·k8s
玉&心1 天前
通过Arthas在线诊断K8S中的内存及JVM等使用情况
docker·k8s·arthas
xing-xing1 天前
Docker容器中Nginx站点根目录网页配置访问
nginx·docker
-梅1 天前
linux(8) 软硬链接
linux·运维·服务器
赵文宇(温玉)1 天前
CoreDNS的hosts插件的缺行配置导致k8s集群异常
容器·kubernetes·rancher
guo_wen_qiang1 天前
上传本地镜像到harbor中
docker·容器·持续部署
张洛闻Eren1 天前
k8s云原生【第十课】:水平 Pod 自动扩缩容
运维·数据库·云原生·kubernetes·github