OnlyOffice验证(三)OnlyOffice编译结果自制Docker镜像

这篇具有很好参考价值的文章主要介绍了OnlyOffice验证(三)OnlyOffice编译结果自制Docker镜像。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

OnlyOffice验证(三)OnlyOffice编译结果自制Docker镜像

  之前验证了OnlyOffice验证(二)在Centos7上部署OnlyOffice编译结果,由于现在普遍都是容器化部署,所以还是验证下Docker镜像打包是否可行,因为最终部署还是会上到K8S,所以这步必须要验证一下。

资源准备

  提前安装好dockerdocker-compose,安装docker-compose是为了简化容器启动方式。菜鸟教程传送门
  首先准备好,要打包镜像的资源。

[root@test documentserver]# pwd
/opt/documentserver
[root@test documentserver]# ll
总用量 822720
-rwxr-xr-x. 1 root root      1220 32 14:10 docker-entrypoint.sh
-rw-r--r--. 1 root root      1366 32 13:34 Dockerfile
drwxr-xr-x. 2 root root        37 31 21:53 DocService
-rw-r--r--. 1 root root       764 31 21:10 documentServer.conf
-rw-r--r--. 1 root root 842447109 224 10:40 documentserver.tar.gz
drwxr-xr-x. 2 root root        37 31 21:53 FileConverter
-rw-r--r--. 1 root root       167 32 13:38 run.sh

  此处说明一下相关文件的功能。

  • docker-entrypoint.sh 容器启动的时候会调用该脚本(基础镜像ubuntu/nginx:1.18-20.04_beta)
  • Dockerfile 用于构建镜像的配置文件
  • DocService 文档服务文件夹,里面放的后台启动脚本
  • documentServer.conf Nginx代理配置文件
  • documentserver.tar.gz 编译结果压缩包,相当于安装程序
  • FileConverter 转换服务文件夹,里面放的后台启动脚本
  • run.sh 主启动脚本,文档服务和转换服务最终会由该脚本负责执行启动

1、run.sh 启动文件

#!/bin/sh

# 启动转换服务
cd /opt/documentserver/server/FileConverter
sh ./start.sh
# 启动文档服务
cd /opt/documentserver/server/DocService 
sh ./start.sh

2、转换服务相关脚本FileConverter

[root@test documentserver]# cd FileConverter/
[root@test FileConverter]# pwd
/opt/documentserver/FileConverter
[root@test FileConverter]# ll
总用量 8
-rw-r--r--. 1 root root 233 228 21:31 start.sh
-rw-r--r--. 1 root root 215 31 21:53 stop.sh
启动脚本 start.sh
#!/bin/sh

server_path=$(dirname $(pwd))

LD_LIBRARY_PATH=$PWD/bin

export PATH=$PATH:$LD_LIBRARY_PATH

export NODE_ENV=development-linux

export NODE_CONFIG_DIR="$server_path/Common/config"

nohup ./converter > $PWD/out.log 2>&1 &
关闭脚本 stop.sh
#!/bin/sh

pid_file=pids

ps -ef | grep converter | grep -v grep | awk '{print $2}' > $PWD/pids

pid_arg=$(awk '{print $1}' $pid_file)

for pid in ${pid_arg}
do
    echo "to kill pid = $pid"
    kill -9 $pid
done

3、文档服务相关脚本DocService

[root@test documentserver]# cd DocService/
[root@test DocService]# pwd
/opt/documentserver/DocService
[root@test DocService]# ll
总用量 8
-rw-r--r--. 1 root root 172 228 21:32 start.sh
-rw-r--r--. 1 root root 216 31 21:53 stop.sh
启动脚本 start.sh
#!/bin/sh

server_path=$(dirname $(pwd))

export NODE_ENV=development-linux

export NODE_CONFIG_DIR="$server_path/Common/config"

nohup ./docservice > $PWD/out.log 2>&1 &
关闭脚本 stop.sh
#!/bin/sh

pid_file=pids

ps -ef | grep docservice | grep -v grep | awk '{print $2}' > $PWD/pids

pid_arg=$(awk '{print $1}' $pid_file)

for pid in ${pid_arg}
do
    echo "to kill pid = $pid"
    kill -9 $pid
done

4、docker-entrypoint.sh 容器内启动脚本

  此处具体得看用的什么基础镜像(此次验证用的是ubuntu/nginx:1.18-20.04_beta)。主要是将run.sh执行添加到这个脚本中,如下所示./opt/run.sh是唯一添加的内容,其余的都是原本的内容。这样转换服务和文档服务就都可以跟随容器一起启动了。

#!/bin/sh
# vim:sw=4:ts=4:et

./opt/run.sh

set -e

if [ -z "${NGINX_ENTRYPOINT_QUIET_LOGS:-}" ]; then
    exec 3>&1
else
    exec 3>/dev/null
fi

if [ "$1" = "nginx" -o "$1" = "nginx-debug" ]; then
    if /usr/bin/find "/docker-entrypoint.d/" -mindepth 1 -maxdepth 1 -type f -print -quit 2>/dev/null | read v; then
        echo >&3 "$0: /docker-entrypoint.d/ is not empty, will attempt to perform configuration"

        echo >&3 "$0: Looking for shell scripts in /docker-entrypoint.d/"
        find "/docker-entrypoint.d/" -follow -type f -print | sort -n | while read -r f; do
            case "$f" in
                *.sh)
                    if [ -x "$f" ]; then
                        echo >&3 "$0: Launching $f";
                        "$f"
                    else
                        # warn on shell scripts without exec bit
                        echo >&3 "$0: Ignoring $f, not executable";
                    fi
                    ;;
                *) echo >&3 "$0: Ignoring $f";;
            esac
        done
        echo >&3 "$0: Configuration complete; ready for start up"
    
    else
        echo >&3 "$0: No files found in /docker-entrypoint.d/, skipping configuration"
    fi
fi

exec "$@"

5、documentServer.conf 代理配置

  此处就是官方提供的默认配置,只不过是把80端口改成了81。

map $http_host $this_host {
  "" $host;
  default $http_host;
}
map $http_x_forwarded_proto $the_scheme {
  default $http_x_forwarded_proto;
  "" $scheme;
}
map $http_x_forwarded_host $the_host {
  default $http_x_forwarded_host;
  "" $this_host;
}
map $http_upgrade $proxy_connection {
  default upgrade;
  "" close;
}
proxy_set_header Host $http_host;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection $proxy_connection;
proxy_set_header X-Forwarded-Host $the_host;
proxy_set_header X-Forwarded-Proto $the_scheme;
server {
  listen 0.0.0.0:81;
  listen [::]:81 default_server;
  server_tokens off;
  rewrite ^\/OfficeWeb(\/apps\/.*)$ /web-apps$1 redirect;
  location / {
    proxy_pass http://localhost:8000;
    proxy_http_version 1.1;
  }
}

6、Dockerfile 镜像配置文件

  由于基础镜像的原因,该配置文件并不需要配置ENTRYPOINTCMD

FROM ubuntu/nginx:1.18-20.04_beta
MAINTAINER lyan

COPY ./documentserver.tar.gz /opt
COPY ./FileConverter /opt/FileConverter/
COPY ./DocService /opt/DocService/
COPY ./documentServer.conf /opt
COPY ./run.sh /opt
COPY ./docker-entrypoint.sh /opt

RUN cd /opt && \
    chmod +x docker-entrypoint.sh && \
    mv docker-entrypoint.sh / && \
    chmod +x run.sh && \
    mv documentServer.conf /etc/nginx/conf.d/ && \
    tar -zxvf documentserver.tar.gz && \
    rm documentserver.tar.gz && \
    cd documentserver && \
    LD_LIBRARY_PATH=${PWD}/server/FileConverter/bin server/tools/allfontsgen \
    --input="${PWD}/core-fonts" \
    --allfonts-web="${PWD}/sdkjs/common/AllFonts.js" \
    --allfonts="${PWD}/server/FileConverter/bin/AllFonts.js" \
    --images="${PWD}/sdkjs/common/Images" \
    --selection="${PWD}/server/FileConverter/bin/font_selection.bin" \
    --output-web='fonts' \
    --use-system="true" && \
    LD_LIBRARY_PATH=${PWD}/server/FileConverter/bin server/tools/allthemesgen \
    --converter-dir="${PWD}/server/FileConverter/bin" \
    --src="${PWD}/sdkjs/slide/themes" \
    --output="${PWD}/sdkjs/common/Images" && \
    cd /opt/documentserver/server/FileConverter && \
    mv /opt/FileConverter/* ./ && \
    chmod +x ./start.sh &&  \
    cd /opt/documentserver/server/DocService && \
    mv /opt/DocService/* ./ && \
    chmod +x ./start.sh

7、documentserver.tar.gz 自行编辑结果

  可以参考OnlyOffice验证(一)DocumentServer编译验证,自行编译,随后将编译结果打成压缩包就可以了。

构建镜像并运行

  Dockerfile同级目录下执行docker build -t ds:v1 .命令,构建名为ds版本为v1的镜像

[root@test documentserver]# ll
总用量 822720
-rwxr-xr-x. 1 root root      1220 32 14:10 docker-entrypoint.sh
-rw-r--r--. 1 root root      1366 32 13:34 Dockerfile
drwxr-xr-x. 2 root root        37 31 21:53 DocService
-rw-r--r--. 1 root root       764 31 21:10 documentServer.conf
-rw-r--r--. 1 root root 842447109 224 10:40 documentserver.tar.gz
drwxr-xr-x. 2 root root        37 31 21:53 FileConverter
-rw-r--r--. 1 root root       167 32 13:38 run.sh
[root@test documentserver]# docker build -t ds:v1 .

  构建成功后执行docker images命令后,会在结果里看到下图框住镜像信息:
OnlyOffice验证(三)OnlyOffice编译结果自制Docker镜像
  接下来用这个镜像启动一个容器。因为我的配置并没有去覆盖Nginx默认的80端口,而是另起一个配置监听81端口,所以此处会映射两个端口:

[root@test documentserver]# docker run --name ds -p 9001:80 -p 9002:81 -d ds:v1

  启动容器后可通过执行docker ps -all查看该容器是否在正常运行OnlyOffice验证(三)OnlyOffice编译结果自制Docker镜像

访问容器Nginx验证是否正常启动

  此处宿主机的IP为192.168.95.131,映射端口为9001。此处访问Nginx欢迎页http://192.168.95.131:9001/验证一下:
OnlyOffice验证(三)OnlyOffice编译结果自制Docker镜像

访问容器DocumentServer验证是否正常启动

  此处宿主机的IP为192.168.95.131,映射端口为9002。此处访问欢迎页http://192.168.95.131:9002/welcome/验证一下:
OnlyOffice验证(三)OnlyOffice编译结果自制Docker镜像

使用Docker-compose启动镜像

  有kubesphere的可以忽略此处,镜像推到私有镜像仓库随便拉着玩就成了。这里先把之前启动的容器删了。

[root@test documentserver]# docker ps -all
CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS              PORTS                                        NAMES
1d80dd2ea6bf        ds:v1               "/docker-entrypoint.…"   17 minutes ago      Up 17 minutes       0.0.0.0:9001->80/tcp, 0.0.0.0:9002->81/tcp   ds
[root@test documentserver]# docker stop 1d80dd2ea6bf
1d80dd2ea6bf
[root@test documentserver]# docker rm 1d80dd2ea6bf
1d80dd2ea6bf

  直接在资源准备的文件里创建一个名为docker-compose.yaml的配置文件,内容配置如下:

version: "2"
services:
  ds:
    image: ds:v1
    container_name: ds
    ports:
      - "9001:80"
      - "9002:81"
    volumes:
      - "/opt/documentserver/data/:/opt/documentserver/server/App_Data/"
    restart: always

  主要就是映射端口,容器共享宿主机的目录,服务随docker服务一起启动。

[root@test documentserver]# pwd
/opt/documentserver
[root@test documentserver]# vim docker-compose.yaml
[root@test documentserver]# ll
总用量 822724
-rw-r--r--. 1 root root       311 32 22:08 docker-compose.yaml
-rwxr-xr-x. 1 root root      1220 32 14:10 docker-entrypoint.sh
-rw-r--r--. 1 root root      1366 32 13:34 Dockerfile
drwxr-xr-x. 2 root root        37 31 21:53 DocService
-rw-r--r--. 1 root root       764 31 21:10 documentServer.conf
-rw-r--r--. 1 root root 842447109 224 10:40 documentserver.tar.gz
drwxr-xr-x. 2 root root        37 31 21:53 FileConverter
-rw-r--r--. 1 root root       167 32 13:38 run.sh

  docker-compose.yaml同级目录下执行docker-compose up -d命令,后台启动容器

[root@test documentserver]# pwd
/opt/documentserver
[root@test documentserver]# docker-compose up -d
Creating network "documentserver_default" with the default driver
Creating ds ... done
[root@test documentserver]# docker ps -all
CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS              PORTS                                        NAMES
1b79ca4c4233        ds:v1               "/docker-entrypoint.…"   12 seconds ago      Up 11 seconds       0.0.0.0:9001->80/tcp, 0.0.0.0:9002->81/tcp   ds

  接下来直接调用文档转换接口测试下文档转换是否可用,此处是将word文档转换成一个图片:

{
    "async": false,
    "filetype": "docx",
    "key": "000001",
    "outputtype": "png",
    "title": "demo.docx",
    "url": "https://d2nlctn12v279m.cloudfront.net/assets/docs/samples/demo.docx"
}

OnlyOffice验证(三)OnlyOffice编译结果自制Docker镜像
OnlyOffice验证(三)OnlyOffice编译结果自制Docker镜像文章来源地址https://www.toymoban.com/news/detail-418993.html

相关总结

  • 《OnlyOffice验证(一)DocumentServer编译验证》
  • 《OnlyOffice验证(二)在Centos7上部署OnlyOffice编译结果》
  • 《OnlyOffice验证(三)OnlyOffice编译结果自制Docker镜像》
  • 《OnlyOffice验证(四)MoblieWeb编译》

到了这里,关于OnlyOffice验证(三)OnlyOffice编译结果自制Docker镜像的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • onlyoffice源码编译

    环境准备 博主的环境 宿主机: window11   64g   24核 vwmare16里面装的ubuntu16.04(x86),虚拟机配置如下图 搭建以及配置安装源加速(自行解决,没有会很慢) 参照官网Compiling ONLYOFFICE Docs for a local server - ONLYOFFICE 安装git    apt-get install -y python git 下载代码  git clone https://github.co

    2024年01月17日
    浏览(52)
  • 自制游戏引擎之shader预编译

    shader预编译为二进制,在程序运行时候加载,可以提升性能,节省启动时间. third_party文件里需要放依赖的第三方 因为电脑访问google的问题,无法通过 shaderc-2023.4utilsgit-sync-deps 脚本自动下载第三方,手动下载 https://codeload.github.com/KhronosGroup/SPIRV-Tools/zip/refs/tags/v2023.3.rc1 https://codeloa

    2024年02月13日
    浏览(36)
  • Linux_CentOS_7.9部署Docker以及镜像加速配置等实操验证全过程手册

    前言:实操之前大家应该熟悉一个新的名词DevOps 俗称开发即运维、新一代开发工程师(Development和Operations的组合词)是一组过程、方法与系统的统称,用于促进开发(应用程序/软件工程)、技术运营和质量保障(QA)部门之间的沟通、协作与整合…那我们Docker之所以发展如此

    2024年02月15日
    浏览(34)
  • 云计算|OpenStack|社区版OpenStack安装部署文档(十三--- 自制镜像---Linux和Windows镜像)

    前言: 接上篇文章 云计算|OpenStack|社区版OpenStack(实务操作---cloud-init的使用) https://zskjohn.blog.csdn.net/article/details/128993374 https://zskjohn.blog.csdn.net/article/details/128993374 我们可以使用官方的镜像,通过cloud-init快速的使用openstack,但这样是有问题的,比如,以centos镜像为例,某些

    2024年02月05日
    浏览(51)
  • Docker安装配置OnlyOffice

    首先,使用以下命令从 Docker Hub 拉取 OnlyOffice Document Server 镜像: 创建挂载目录 接下来,运行以下命令以创建和启动 OnlyOffice Docker 容器,并设置必要的卷(volumes): sudo docker run : 运行一个 Docker 容器。 -i -t -d : 这是一组标志,其中: -i : 让容器的标准输入保持打开状态。

    2024年01月22日
    浏览(40)
  • docker搭建onlyoffice及使用

    安装 yum install -y docker 检测 Docker 是否安装成功 yum list installed | grep docker 设置开机自启 systemctl enable docker 启动 systemctl start docker 查看版本 docker -v 拉取镜像pull OnlyOffice,建议指定版本号,其他版本在项目中可能遇到问题。 运行 将本机的9000端口映射到docker的80端口上,访问时通

    2024年02月04日
    浏览(35)
  • Docker无法部署Onlyoffice问题记录

    国产操作系统(麒麟v10-x86-64bit,openEuler20.03 64bit x86),安装docker之后,通过docker run之后Onlyoffice无法成功跑起来,且会消耗大量cpu资源,甚至导致系统卡死 镜像的entrypoint中指向运行一个sh脚本,脚本中通过service命令启动rabbitmq,但是一直无法成功启动,且一直处于循环尝试导

    2024年01月18日
    浏览(36)
  • Docker 下 OnlyOffice 社区版安装

    官网地址:ONLYOFFICE - Secure Online Office | ONLYOFFICE 官方文档:Installing ONLYOFFICE Docs for Docker on a local server - ONLYOFFICE ONLYOFFICE Docs是一个在线办公套件,包括文本、电子表格和演示文稿的查看器和编辑器,与Office Open XML格式完全兼容:.docx、.xlsx、.pptx,并实现实时协作编辑。 社区版

    2024年02月12日
    浏览(41)
  • Centos 7 通过Docker部署OnlyOffice

      在有些集成网站中,是不支持JWT,如果下载默认启用JWT的版本,然后禁用JWT的话,在局域网中通过私有IP访问时就会出现问题,以下会介绍未默认启用JWT版本的部署方法。 请参考另一篇文章: Docker CE 安装 1、从Docker镜像仓库中下载(拉取)OnlyOffice镜像到本地计算机 2、在

    2024年02月10日
    浏览(33)
  • 在Docker中安装OnlyOffice过程记录

    官网地址:https://www.docker.com/products/docker-desktop/ 注意:我这里安装的版本是( Docker Desktop 4.21.1),只能安装到C盘,安装完成后第一件事是修改数据存储路径,否则C盘将越来越大,修改方法如下 进入容器,复制/var/www/onlyoffice/documentserver/web-apps/apps/documenteditor/main/app.js 打开文

    2024年02月09日
    浏览(39)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包