LibreOffice
HAP 默认提供的文档在线预览服务是基于 OnlyOffice 实现(hap-doc),由于涉及字体版权问题,部分字体会出现无法渲染或乱码的情况。但由于没有比较理想的免费替代产品,所以提供了基于 LibreOffice 的镜像(hap-ldoc)来针对 Word、PDF 预览效果进行优化,最终 Excel 预览效果依然基于 OnlyOffice,Word、PDF 则基于 LibreOffice。
基于 HAP 单机环境配置
-
下载镜像(离线包下载)
docker pull nocoly/hap-ldoc:1.0.0
-
编辑 docker-compose.yaml 文件,新增环境变量与服务配置,如下图所示
docker-compose.yaml 文件默认所在路径为:/data/hap/script/docker-compose.yaml
services:
app:
image: nocoly/hap-community:5.8.3
environment:
ENV_DOCPREVIRE_EXT_ENDPOINTS: "ldoc:8000" # 新增环境变量
# 新增服务配置
ldoc:
image: nocoly/hap-ldoc:1.0.0
environment:
ENV_FILE_INNER_URI: "app:8880"
ENV_DOCPREVIRE_SUBPATH: "/ldocpreview" -
重启 HAP 微服务
基于 Docker 独立部署 ldoc 服务
-
下载镜像(离线包下载)
docker pull nocoly/hap-ldoc:1.0.0
-
Docker Swarm 初始化 (已初始化可跳过此步)
docker swarm init
-
任意目录下创建
ldoc.yaml
文件,内容如下:version: '3'
services:
ldoc:
image: nocoly/hap-ldoc:1.0.0
ports:
- 8881:8000
environment:
ENV_FILE_INNER_URI: "微服务应用的内网地址,如:172.27.0.13:8880"
ENV_DOCPREVIRE_SUBPATH: "/ldocpreview" -
启动 ldoc 文档预览服务,
ldoc.yaml
所在目录下执行docker stack deploy -c ldoc.yaml ldoc
如果需要删除服务,可执行
docker stack rm ldoc
-
微服务对应的
docker-compose.yaml
(默认路径:/data/hap/script/docker-compose.yaml
)增加环境变量ENV_DOCPREVIRE_EXT_ENDPOINTS: "ldoc 服务的内网地址,如:172.27.0.13:8881"
-
重启 HAP 微服务
基于Kubernetes部署ldoc服务
-
HAP 微服务集群环境默认基于 Kubernetes 部署,如需集成ldoc,可通过下方配置文件内容创建 ldoc服务。
apiVersion: apps/v1
kind: Deployment
metadata:
name: ldoc
namespace: default
spec:
replicas: 1
selector:
matchLabels:
app: ldoc
template:
metadata:
labels:
app: ldoc
spec:
containers:
- name: ldoc
image: nocoly/hap-ldoc:1.0.0
env:
- name: ENV_FILE_INNER_URI
value: "www:8880"
- name: ENV_DOCPREVIRE_SUBPATH
value: "/ldocpreview"
resources:
limits:
cpu: "4"
memory: 4096Mi
requests:
cpu: "0.01"
memory: 64Mi
readinessProbe:
tcpSocket:
port: 8000
initialDelaySeconds: 10
periodSeconds: 10
livenessProbe:
tcpSocket:
port: 8000
initialDelaySeconds: 180
periodSeconds: 10
---
apiVersion: v1
kind: Service
metadata:
name: ldoc
namespace: default
spec:
selector:
app: ldoc
ports:
- name: internal
port: 8001
targetPort: 8000-
上述配置中 ENV_FILE_INNER_URI 变量值写的时 www:8880,走的是容器内部通讯访问 www 服务;如果 ldoc 服务部署环境与 HAP 微服务不在同 namespace 下,或不在同一环境,则此变量值需要改成 HAP 系统的内网地址。
-
其他服务访问 ldoc,在 service 这里定义的也是走容器内部通讯,同上如果不在同 namespace 或 同一环境,则改成 nodePort 方式,配置微服务连接 ldoc 对外的地址。
-
-
配置微服务使用 ldoc 服务,在 config.yaml 中新增变量
ENV_DOCPREVIRE_EXT_ENDPOINTS: "ldoc:8001"