Docker 部署在线文件转换服务--Libre Office Online

简述

由于好奇网上云盘的在线编辑与转换功能,就自己通过Docker 最新版Docker 19.03.8与LibreOffice Online 构建一个简单的在线文件编辑与转换服务;
通过Docker 可以免去重新部署一个服务器,并且可以快速的构建在线文件转换服务,并且使用开源的portainer 容器管理工具进行Docker 容器的部署与管理;

一、Docker 部署

1. Docker 离线安装

具体的其他安装方式详见:Docker Install
这里通过YUM的RPM包离线安装Docker Engine
需要RPM如下:

RPM 说明
docker-ce Docker Engine
docker-ce-cli Docker Cli 客户端
containerd.io runc

2. Docker 加入开机自启与配置

2.1 查看安装的Docker CE 版本:

[root@docker devicemapper]# docker --version
Docker version 19.03.8, build afacb8b

2.2 修改 docker.service 启动文件

2.2.1 修改远程连接的方式,安全起见,将 -H tcp://0.0.0.0 修改为本地指定的IP与Port,添加Socket 文件:

[root@docker devicemapper]# vim /usr/lib/systemd/system/docker.service

修改配置如下所示:
在这里插入图片描述

2.2.2 重新加载,docker.service启动文件

[root@docker devicemapper]# systemctl daemon-reload 

2.3 加入开机自启,并启动Docker Engine

[root@docker devicemapper]# systemctl enable docker  # 加入开机启动
Created symlink from /etc/systemd/system/multi-user.target.wants/docker.service to /usr/lib/systemd/system/docker.service.
[root@docker devicemapper]# systemctl start docker  #启动

二、获取容器镜像

1. 首先需要查找镜像文件:

查找 Portainer 管理镜像文件

[root@docker ~]# docker search portainer
NAME                             DESCRIPTION                                     STARS               OFFICIAL            AUTOMATED
portainer/portainer              Making Docker management easy. https://porta…   1683
portainer/agent                  An agent used to manage all the resources in…   57
portainer/templates              App Templates for Portainer http://portainer…   17
lihaixin/portainer               docker ui                                       13                                      [OK]
portainerci/portainer            Portainer images automatically created via P…   4
portainer/golang-builder         Utility to build Golang binaries.               4                                       [OK]
greenled/portainer-stack-utils   Bash scripts to deploy/undeploy stacks in a …   3                                       [OK]
portainer/base                   Multi-stage build image to create the Portai…   2                                       [OK]

查找 Libre Office Online 镜像文件

[root@docker ~]# docker search libreoffice
NAME                                         DESCRIPTION                                     STARS               OFFICIAL            AUTOMATED
libreoffice/online                           LibreOffice Online (x86-64 only)                100
xcgd/libreoffice                             A headless libreoffice server                   24                                      [OK]
esystemstech/libreoffice                     LibreOffice packing – server mode               15
thedarkknight/libreoffice-online-unlimited   LibreOffice Online Compiled with greatly inc…   13

2. 拉取最新tag镜像文件到本地

[root@docker ~]# docker pull portainer/portainer:latest
[root@docker ~]# docker pull libreoffice/online:latest

3. 查看本地的镜像文件:

[root@docker ~]# docker images  
REPOSITORY            TAG                 IMAGE ID            CREATED             SIZE
haproxy               latest              fd3712e1e431        9 days ago          92.4MB
redis                 latest              4cdbec704e47        3 weeks ago         98.2MB
portainer/portainer   latest              2869fc110bf7        5 weeks ago         78.6MB
libreoffice/online    master              3012d9ce2a19        2 months ago        1.9GB

4. 启动Portainer 管理容器

[root@docker ~]#  docker run -it -d -p 9000:9000 --name portainer --restart=always portainer/portainer

-d  #以daemon 方式启动(在后台运行)
-p 9000:9000  #端口映射,将本地9000映射到容器内的9000
--name portainer  #设置容器名称
--restart=always  #重启方式,always 总是重启(stop或异常停止等)
portainer/portainer   #通过这个image 创建并启动 

5. 登录到Portainer 管理

链接:http://IP:9000,注,首次登录,需要设置管理员登录密码;
在这里插入图片描述
登陆后,如下可以通过这个管理多个Docker
在这里插入图片描述

查看容器运行状态:
在这里插入图片描述

三、启动 Libre Office Online 容器

1. 创建并启动LibreOffice Online 服务:

[root@docker ~]# docker run -t -d -p 9980:9980  -e "username=admin" -e "password=123456" --restart always --cap-add MKNOD libreoffice/online

-e "username=admin"   # Libre office online web 管理控制台用户名/密码
-e "password=123456" 
--cap-add MKNOD   #添加 Linux mknod (创建特殊文件)功能

2. 配置Office 应用配置,修改HTTPS为HTTP

由于Libre Office Online 默认配置为HTTPS ,因此,无法正常通过HTTP 正常访问,因此需要修改应用的配置文件:

2.1 获取Docker 容器内的配置文件到当前目录下:

  1. 禁用SSL 加密传输:(其默认是True,开启)
[root@docker ~]# docker cp LibreOfficeOnline:/etc/loolwsd/loolwsd.xml /home/loolwsd.xml
[root@docker home]# vim /home/loolwsd.xml
<ssl desc="SSL settings">
        <enable type="bool" desc="Controls whether SSL encryption between browser and loolwsd is enabled (do not disable for production deployment). If default is false, must first be compiled with SSL support to enable." default="true">**false**</enable>

  1. 将配置文件重新复制到容器中,并重新启动Office 容器
[root@docker ~]#  docker cp /home/loolwsd.xml LibreOfficeOnline:/etc/loolwsd/loolwsd.xml 
[root@docker ~]#  docker restart LibreOfficeOnline
[root@docker home]# curl -k http://127.0.0.1:9980  #测试可以正常访问
OK

3. 查看LibreOffice Online 服务运行状态

在这里插入图片描述
直接访问:http://192.168.5.142:9980/loleaflet/dist/admin/admin.html
在这里插入图片描述
如上所示的Web管理控制平台

4. 验证Libre Office Online 安装:

  1. 访问: http://192.168.5.142:9980 ,如下所示,即为安装成功:
    在这里插入图片描述
  2. 访问 http://192.168.5.142:9980/hosting/discovery 出现xml内容,证明软件安装成功了

5. 验证Libre Office Online 文件转换:

$ curl -F "[email protected]" http://192.168.5.142:9980/lool/convert-to/pdf > out.pdf
  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
100 17817  100 16145  100  1672   8072    836  0:00:02  0:00:02 --:--:--  6829

如上所示:接收到out.pdf 文件,文件转换服务,到此就完成部署。

参考:

  1. Setting up and configuring collabora/code Docker image
  2. How simple is it to deploy Portainer?
发布了60 篇原创文章 · 获赞 25 · 访问量 8万+

猜你喜欢

转载自blog.csdn.net/AMimiDou_212/article/details/105766141
今日推荐