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 容器内的配置文件到当前目录下:
- 禁用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>
- 将配置文件重新复制到容器中,并重新启动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 安装:
- 访问: http://192.168.5.142:9980 ,如下所示,即为安装成功:
- 访问 http://192.168.5.142:9980/hosting/discovery 出现xml内容,证明软件安装成功了
5. 验证Libre Office Online 文件转换:
$ curl -F "data=@Conf.txt" 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 文件,文件转换服务,到此就完成部署。