跳到主要内容

LibreOffice

提示

HAP 默认提供的文档在线预览服务是基于 OnlyOffice 实现(hap-doc),由于涉及字体版权问题,部分字体会出现无法渲染或乱码的情况。但由于没有比较理想的免费替代产品,所以提供了基于 LibreOffice 的镜像(hap-ldoc)来针对 Word、PDF 预览效果进行优化,最终 Excel 预览效果依然基于 OnlyOffice,Word、PDF 则基于 LibreOffice。

基于 HAP 单机环境配置

  1. 下载镜像(离线包下载

    docker pull nocoly/hap-ldoc:1.0.0
  2. 编辑 docker-compose.yaml 文件,新增环境变量与服务配置,如下图所示

    docker-compose.yaml 文件默认所在路径为:/data/hap/script/docker-compose.yaml

    Alt text

    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"
  3. 重启 HAP 微服务

基于 Docker 独立部署 ldoc 服务

  1. 下载镜像(离线包下载

    docker pull nocoly/hap-ldoc:1.0.0
  2. Docker Swarm 初始化 (已初始化可跳过此步)

    docker swarm init
  3. 任意目录下创建 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"
  4. 启动 ldoc 文档预览服务,ldoc.yaml 所在目录下执行

    docker stack deploy -c ldoc.yaml ldoc

    如果需要删除服务,可执行 docker stack rm ldoc

  5. 微服务对应的 docker-compose.yaml(默认路径:/data/hap/script/docker-compose.yaml)增加环境变量

    ENV_DOCPREVIRE_EXT_ENDPOINTS: "ldoc 服务的内网地址,如:172.27.0.13:8881"
  6. 重启 HAP 微服务

基于Kubernetes部署ldoc服务

  1. 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 对外的地址。

  2. 配置微服务使用 ldoc 服务,在 config.yaml 中新增变量

    ENV_DOCPREVIRE_EXT_ENDPOINTS: "ldoc:8001"
  3. 重启微服务