首页 > 其他分享 >自编译制作docker版本的onlyoffice镜像

自编译制作docker版本的onlyoffice镜像

时间:2024-07-23 09:52:51浏览次数:9  
标签:sudo apt server && 镜像 docker onlyoffice deb

笔记记录自编译制作docker版本的onlyoffice镜像

一、环境:

1、win11安装Ubuntu20.04.6.LTS

2、需要开代理

文件参考:https://helpcenter.onlyoffice.com/installation/docs-community-compile.aspx

二、准备

1、sudo apt-get update

2、sudo apt-get install -y git python openssh-server

3、/etc/profile文件追加: export ALL_PROXY=socks5://192.168.2.x:7890 export HTTP_PROXY=http://192.168.2.x:7890 export HTTPS_PROXY=http://192.168.2.x:7890

使其生效的命令:source /etc/profile

4、git配置代理 git config --global http.proxy http://192.168.2.x:7890 git config --global https.proxy socks5://192.168.2.x:7890

5、npm配置代理 sudo npm config set proxy http://192.168.2.x:7890 sudo npm config set https-proxy http://192.168.2.x:7890

下载并编译

git clone https://github.com/ONLYOFFICE/build_tools.git

1、下载完成后先执行deps.py,查看是否确实依赖环境

python ./tools/linux/deps.py

运行完成会出现packages_complete的文件

2、还需要改个配置./scripts/base.py

old: # common apps def download(url, dst): return cmd_exe("curl", ["-L", "-o", dst, url])

改后: # common apps def download(url, dst): return cmd_exe("curl", ["-k","-L", "-o", dst, url])

3、进入目录'./tools/linux/',执行.automate.py server $ cd build_tools/tools/linux $ ./automate.py server

运行测试

1、sudo apt-get install -y nginx postgresql rabbitmq-server $ sudo -i -u postgres psql -c "CREATE DATABASE onlyoffice;" $ sudo -i -u postgres psql -c "CREATE USER onlyoffice WITH password 'onlyoffice';" $ sudo -i -u postgres psql -c "GRANT ALL privileges ON DATABASE onlyoffice TO onlyoffice;"

执行sql $ psql -hlocalhost -Uonlyoffice -d onlyoffice -f ../../out/linux_64/onlyoffice/documentserver/server/schema/postgresql/createdb.sql

运行测试: $ cd ../../out/linux_64/onlyoffice/documentserver/server/DocService $ NODE_ENV=development-linux NODE_CONFIG_DIR=$PWD/../Common/config ./docservice

浏览器访问:http://192.168.217.183:8000/web-apps/apps/api/documents/api.js

浏览器访问:http://192.168.217.183:8000/info/info.json,可以看到connections的值就是限制访问的数量。

要修改这个值,

server/Common/constants.js

exports.LICENSE_CONNECTIONS = 100;

编译prod

$ cd build_tools/tools/linux
$ ./automate.py server PRODUCT_VERSION='8.0.1.0' BUILD_NUMBER='1' NODE_ENV='production'

打包成deb格式

$ # 与目录build_tools同级
$ sudo apt-get install build-essential m4 npm -y
$ npm install -g pkg
$
$ git clone https://github.com/ONLYOFFICE/document-server-package.git
$
$ cd document-server-package
$ cat << EOF >> Makefile
$ deb_dependencies: \$(DEB_DEPS)         #编译文件追加dependencies
$ EOF
$ PRODUCT_VERSION='8.0.1.0' BUILD_NUMBER='1' make deb_dependencies 
$
$ cd deb/build
$ sudo apt build-dep ./
$ PRODUCT_VERSION='8.0.1.0' BUILD_NUMBER='1' make deb

docker镜像

$ # 与目录build_tools同级
$ git clone https://github.com/ONLYOFFICE/Docker-DocumentServer.git
$ cd ONLYOFFICE/Docker-DocumentServer/
$ # 将生成的deb包copy到当前目录下的deb文件夹中
$ copy ../document-server-package/deb/xxx.deb ./deb/xxx_amd64.deb

修改后的Dockerfile ARG BASE_IMAGE=ubuntu:22.04 FROM ${BASE_IMAGE} as documentserver LABEL maintainer Ascensio System SIA [email protected] ARG PG_VERSION=14 ENV LANG=en_US.UTF-8 LANGUAGE=en_US:en LC_ALL=en_US.UTF-8 DEBIAN_FRONTEND=noninteractive PG_VERSION=${PG_VERSION} ARG ONLYOFFICE_VALUE=onlyoffice RUN echo "#!/bin/sh\nexit 0" > /usr/sbin/policy-rc.d && \ apt-get -y update && \ apt-get -yq install wget apt-transport-https gnupg locales lsb-release && \ locale-gen en_US.UTF-8 && \ echo ttf-mscorefonts-installer msttcorefonts/accepted-mscorefonts-eula select true | debconf-set-selections && \ apt-get -yq install \ adduser \ apt-utils \ bomstrip \ certbot \ cron \ curl \ htop \ libasound2 \ libboost-regex-dev \ libcairo2 \ libcurl3-gnutls \ libcurl4 \ libgtk-3-0 \ libnspr4 \ libnss3 \ libstdc++6 \ libxml2 \ libxss1 \ libxtst6 \ mysql-client \ nano \ net-tools \ netcat-openbsd \ nginx-extras \ postgresql \ postgresql-client \ pwgen \ rabbitmq-server \ redis-server \ software-properties-common \ sudo \ supervisor \ ttf-mscorefonts-installer \ xvfb \ zlib1g && \ if [ $(ls -l /usr/share/fonts/truetype/msttcorefonts | wc -l) -ne 61 ]; \ then echo 'msttcorefonts failed to download'; exit 1; fi && \ echo "SERVER_ADDITIONAL_ERL_ARGS="+S 1:1"" | tee -a /etc/rabbitmq/rabbitmq-env.conf && \ sed -i "s/bind ./bind 127.0.0.1/g" /etc/redis/redis.conf && \ sed 's|(application/zip.)|\1\n application/wasm wasm;|' -i /etc/nginx/mime.types && \ pg_conftool $PG_VERSION main set listen_addresses 'localhost' && \ service postgresql restart && \ sudo -u postgres psql -c "CREATE USER $ONLYOFFICE_VALUE WITH password '$ONLYOFFICE_VALUE';" && \ sudo -u postgres psql -c "CREATE DATABASE $ONLYOFFICE_VALUE OWNER $ONLYOFFICE_VALUE;" && \ service postgresql stop && \ service redis-server stop && \ service rabbitmq-server stop && \ service supervisor stop && \ service nginx stop && \ rm -rf /var/lib/apt/lists/* ARG PACKAGE_FILE=xxx_amd64.deb COPY config/supervisor/supervisor /etc/init.d/ COPY config/supervisor/ds/.conf /etc/supervisor/conf.d/ COPY run-document-server.sh /app/ds/run-document-server.sh COPY deb/$PACKAGE_FILE /tmp/ EXPOSE 80 443 ARG COMPANY_NAME=onlyoffice ARG PRODUCT_NAME=documentserver ARG PRODUCT_EDITION= ARG PACKAGE_VERSION= ARG TARGETARCH ENV COMPANY_NAME=$COMPANY_NAME \ PRODUCT_NAME=$PRODUCT_NAME \ PRODUCT_EDITION=$PRODUCT_EDITION \ DS_DOCKER_INSTALLATION=true RUN chmod 755 /etc/init.d/supervisor && \ sed "s/COMPANY_NAME/${COMPANY_NAME}/g" -i /etc/supervisor/conf.d/.conf && \ service supervisor stop && \ chmod 755 /app/ds/.sh && \ apt-get -yq install /tmp/$PACKAGE_FILE && \ rm -rf /var/log/$COMPANY_NAME && \ rm -rf /var/lib/apt/lists/ VOLUME /var/log/$COMPANY_NAME /var/lib/$COMPANY_NAME /var/www/$COMPANY_NAME/Data /var/lib/postgresql /var/lib/rabbitmq /var/lib/redis /usr/share/fonts/truetype/custom ENTRYPOINT ["/app/ds/run-document-server.sh"]

区别:

构建镜像 $ cd Docker-DocumentServer/ $ sudo docker build -t 镜像名:tag .

查找那个文件包含某个字符 find . -type f -print | xargs grep -li "production"

nodejs调试

1、进入:/home/mantishell/github/onlyoffice/server/DocService,运行NODE_ENV=development-linux NODE_CONFIG_DIR=$PWD/../Common/config node sources/server.js启动server服务

2、进入:/home/mantishell/github/onlyoffice/server/FileConverter,运行sudo LD_LIBRARY_PATH=$PWD/bin NODE_ENV=development-linux NODE_CONFIG_DIR=$PWD/../Common/config ./converter运行文件转换服务

3、进入/home/mantishell/github/onlyoffice/document-server-integration/web/documentserver-example/nodejs,运行NODE_ENV=development-linux NODE_CONFIG_DIR=$PWD/config node ./bin/www启动example服务

4、将EditorUIController.isSupportEditFeature的结果返回true,将不会提示Using the free Community version, you can open documents for viewing only. To access mobile web editors, a commercial license is required.

标签:sudo,apt,server,&&,镜像,docker,onlyoffice,deb
From: https://www.cnblogs.com/mantishell/p/18317596

相关文章

  • 4.9k star,下一代开源WAF,可无缝集成docker、k8s
    这是一个基于nginx的web服务器,可以无缝集成到你现有的环境中(Linux,Docker,Swarm,Kubernetes),除了可以在命令行界面操作,也提供了webui界面可以操作。 图片 bunkerwebbunkerweb简介BunkerWeb是下一代开源Web应用程序防火墙(WAF),传统意义上的waf是在web服务器前面增加防护设施。......
  • Docker 笔记 - Docker 容器重启策略 --restart 介绍和实战
    https://zhuanlan.zhihu.com/p/494370957 1.Docker容器的重启策略目的为了保证容器运行时健壮性(自愈),Docker提供了容器重启策略,即使用参数--restart,它可以让容器在退出时自动尝试重启。场景Docker容器的重启策略一般用于生产环境,开发环境和实验环境可以忽略。例如使......
  • docker 操作
    1.docker安装环境准备--yum镜像源切换成阿里镜像mv/etc/yum.repos.d/CentOS-Base.repo/etc/yum.repos.d/CentOS-Base.repo.backupcurl-o/etc/yum.repos.d/CentOS-Base.repohttp://mirrors.aliyun.com/repo/Centos-7.repoyumcleanallyummakecache--添加阿里docker-ce安装......
  • 阿里云系统安装docker
    dockers安装sudoyuminstall-yyum-utils---使用阿里云镜像yum-config-manager--add-repohttp://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repoyuminstalldocker-cedocker-ce-clicontainerd.iosystemctlstartdocker---设置docker镜像地址sudomk......
  • Docker Minio rclone数据迁移
    dockerminio进行数据迁移使用rclone进行数据迁移是一种非常灵活且强大的方式,特别是在处理大规模数据集或跨云平台迁移时。rclone是一款开源的命令行工具,用于同步文件和目录到多种云存储服务,包括MinIO。下面是使用rclone进行数据迁移至MinIO的步骤和示例。使用rclone迁......
  • 通过 Docker 部署 Gitlab
    通过docker安装一个gitlab没啥难度。按照的官方手册一溜烟跑下来,感觉比用rpm包装都容易很多。在此作下简单的记录运行gitlab容器#构建docker数据挂载目录mkdir-p/data/gitlab运行如下脚本#!/bin/bashGITLAB_HOME=/data/gitlabsudodockerrun-d\-p443......
  • GZCTF比赛平台搭建——单Docker部署
    GZCTF是一个开源的网络安全竞赛平台,采用微服务架构,提供React.js前端和Django后端,支持用户通过解决实际安全问题提升技能。平台具有权限控制、加密通信和自定义赛事等功能,适用于初学者、教育机构和企业培训等场景。首先放出GZCTF官方文档,有一定基础的可以前往查看。GZCTF官方......
  • Docker数据管理
    目录数据卷(DataVolumes)容器和宿主机的数据共享1.拉取centos镜像2.创建容器3.输入内容验证经过宿主机,实现容器间的数据共享1.创建a2容器,并且挂载同一个宿主机目录2.输入内容验证挂载文件1.创建a2容器,并且挂载文件2.只读操作数据卷容器1.创建a1容器作为数据卷容器......
  • 如何减少 Docker 日志大小,有效节省磁盘空间
    Docker是一个强大的容器化平台,它允许开发者在一个独立的环境中运行应用程序。虽然Docker提供了很多便利,但在实际使用过程中,日志文件可能会迅速增长,占用大量的磁盘空间。本文将详细介绍如何减少Docker日志大小,从而有效节省磁盘空间。Docker日志机制Docker使用日志......
  • docker 基础镜像损坏
    dockerrun以后查看日志,提示报错,服务不能正常启动.#dockerlogs-f6413standard_init_linux.go:211:execuserprocesscaused"nosuchfileordirectory"standard_init_linux.go:211:execuserprocesscaused"nosuchfileordirectory"st......