此方案解决 docker-compose 方式安装的 seafile 9.0 以上的版本 office 在线预览问题
一、docker-compose 安装
参考:seafile docker-compose安装官方地址
二、office 在线预览
由于 seafile 9.0 以上对 office 在线预览采取 docker image 分离的方式,直接安装的 seafile 9.0 及以上版本是无法在线预览 office 相关文档(doc、xls、ppt等文件)。
1.下载并修改docker-compose.yml 文件
下载地址:docker-compose.yml
version: '3.0'
services:
office-preview:
image: seafileltd/office-preview:latest
container_name: seafile-office-preview
ports:
- "8089:8089"
command: bash start.sh
volumes:
- /opt/office-preview/shared:/shared #宿主机路径可以自定义
2.启动 office 容器
docker-compose up -d
启动容器后,需要手动在宿主机添加配置文件 /opt/office-preview/shared/office_convertor_settings.py 这个文件是没有的,需要自己创建。
# -*- coding:utf-8 -*-
#和 seafile 的 seahub_settings.py 里的 SECRET_KEY 保持一致
SECRET_KEY = "o@^yktib39k+oor2_busbcxqaach_$b5zq-)4l6l39v#8ky5ta"
WORKERS = 10 # worker 数
OUTPUT_DIR = '/shared/output' # 输出目录,容器内目录
PORT = 8089 # 服务端口,容器内端口,非映射到外部的端口
添加配置后,需要重启一下 office 镜像,使 office_convertor_settings.py 配置文件生效。
docker restart seafile-office-preview
3.修改 Seafile 的 seahub_settings.py 配置文件
进入seafile容器内。
docker exec -it seafile /bin/bash
在 conf/seahub_settings.py 添加下列配置以便调用 Office 预览服务。
OFFICE_CONVERTOR_ROOT = 'http://officepreview容器IP:8089'
4.重启 seafile 容器
docker restart seafile
参考官方解决方案
三.问题注意★★★
官方给的解决方案解决的是 seafile 直接安装的模式,docker-compose 安装的方式要想达到在线预览office需要额外做些处理。
1.seafile 容器与 seafile-office-preview 容器通信问题
官方文档给出的同信配置为:
OFFICE_CONVERTOR_ROOT = 'http://127.0.0.1:8089'
即本地回环地址,配置后只能在 seafile 容器内通信,而不是宿主,无法和 seafile-office-preview 通信。
那么,可以根据seafile 的 docker-compose 方式,使用相同网络配置 seafile-office-preview 的 docker-compose.yml 达到 seafile 与 seafile-office-preview 使用相同的 docker network。
version: '3.0'
services:
office-preview:
image: seafileltd/office-preview:latest
container_name: seafile-office-preview
ports:
- "8089:8089"
command: bash start.sh
volumes:
- /opt/office-preview/shared:/shared ##宿主机路径可以自定义
networks: #配置容器的 docker network
- networkname #和 seafile 使用相同的 docker network 名称
restart: always
networks:
networkname:
external: true #表示已经存在,不需要创建,直接使用已有的 docker network,建议seafile 也使用此方式,可以方便自定义docker网络。
使用该 docker-compose.yml 布置启动容器后,使用 docker inspect docker_network_name 命令查看 seafile-office-preview 容器 网络信息。
ubuntu@test:~$ sudo docker inspect myseafilenet
[
{
"Name": "myseafilenet",
.....................................
"c1c51263eec7b51c53faa7d42f038ba4fe1d1b17e363b8666a040c7fc0998ed7": {
"Name": "seafile",
.................................
"IPv4Address": "192.168.12.5/24",
.................................
},
"4d6472a627f4f8377de0ebd28a4443a73eae6b053b08be2b4ae727520e83a699": {
"Name": "seafile-office-preview",
.......................................
"IPv4Address": "192.168.12.4/24",
.......................................
},
...................................
]
查看信息可以看到,seafile 容器的地址为 192.168.12.5 ,seafile-office-preview 容器的地址为 192.168.12.4 。可以修改 seafile 容器下的 seahub_settings.py文件文件转换信息如下:
OFFICE_CONVERTOR_ROOT = 'http://192.168.12.4:8089'
重启 seafile 即可正常预览 office了。
2.配置好 seafile 上传下载地址
在研究 seafile 的 office 在线预览时,仅是布置了 seafile 的 初始环境,导致 office 预览文件转换出错,查看log 发现,office 需要使用 seafile 的上传下载地址。所以需要配置完 seafile 上传下载地址正常后,在配置 seafile-office-preview 相关信息。
网友评论