openoffice在arm64环境下运行的解决方案(提供docker镜像包制作)
一、写在前面
操作系统:麒麟v10(arm64环境)
aarch64架构的,openoffice一直都没找到有适配该版本的服务,openoffice国产化的适配并不是十分友好。
所以这里找到了一个替换的服务,就是libreoffice
,支持arm64架构
libreoffice下载地址:libreoffice下载
libreoffice对应docker镜像:libreoffice镜像
libreoffice代码、libreoffice官网、libreoffice社区
有兴趣的,可以去深入研究下
由于我们之前使用openoffice,只是用到了一小部分功能,将word、excel等文档转成pdf。
这里就不过多的深入研究,这里就直接给出可在aarch64架构下运行的 openoffice arm64
版本。
openoffice
和libreoffice
,两个服务启动的命令,都是一样,针对于我们的代码,是不需要改动的,只是服务器对应服务的变化。
二、可运行的libreoffice(arm64)
这里提供一个下载地址:LibreOffice7.5.3.2-arm
无需编译,直接解压,即可启动:
nohup /LibreOffice7.5.3.2-arm/program/soffice -headless -accept="socket,host=127.0.0.1,port=8100;urp;" -nofirststartwizard &
三、docker镜像包制作
很多情况下,docker运行的环境,还是比较多的。
毕竟云原生的环境越来越流行了,所以这里也提供一下docker镜像包的制作。
已处理中文乱码问题
- Dockerfile-arm
FROM linuxserver/libreoffice:latest
# 处理中文乱码问题
COPY ./chiness /usr/share/fonts/chiness
RUN cd /usr/share/fonts/ && \
chmod -R 755 /usr/share/fonts && \
mkfontscale && \
mkfontdir && \
fc-cache -fv
# 运行openoffice
RUN mkdir /opt/openoffice4
COPY ./startServer.sh /opt/openoffice4/
ENTRYPOINT ["sh", "/opt/openoffice4/startServer.sh"]
1.这里使用的基础镜像
linuxserver/libreoffice:latest
,需要拉取arm64架构的 docker pull linuxserver/libreoffice:latest --platform=arm642.
chiness
文件夹是中文字体,可以在windows上 C:\Windows\Fonts 目录下拿需要的中文字体3.
startServer.sh
是运行openoffice的脚本文件,下面提供。
- startServer.sh
#!/bin/bash
source /etc/profile
cd /usr/lib/libreoffice/program
#设置HOST
if [[ $OPENOFFICE_HOST != "" ]]; then
export host=$OPENOFFICE_HOST
else
export host="0.0.0.0"
fi
#设置PORT
if [[ $OPENOFFICE_PORT != "" ]]; then
export port=$OPENOFFICE_PORT
else
export port="8100"
fi
#启动openoffice
nohup soffice --headless --accept="socket,host=$host,port=$port;urp;" --nofirststartwizard > openoffice.out &
echo 'openoffice start success'
sleep 10
ps -ef|grep program
tail -f openoffice.out
- build-arm.bat
docker load -i libreoffice.tar
docker buildx build -t llsydn/openoffice:4.1.10-arm -f ./Dockerfile-arm --platform linux/arm64 . --load
pause
libreoffice.tar,对应
linuxserver/libreoffice:latest
基础镜像。上不了网的,可以先找个有网的环境拉取这个镜像,再通过docker save 保存为一个tar镜像包即可。
因为我是用window环境下的docker环境,去打包arm镜像包,所以我这里用了docker buildx build
进行镜像打包。
一般linux环境下的docker环境,可以直接用docker build
进行镜像打包即可。
这里所需要的文件,我这边提供一个下载的地址,有需要的小伙伴,可以直接用我这边提供的文件,进行docker镜像包的制作。
好了,以上就是我个人的实操了。可能有些不对,大家伙,轻点喷!!!
个人理解,可能也不够全面,班门弄斧了。
好了,今天就先到这里了!!!^_^
如果觉得有收获的,帮忙点赞、评论、收藏
一下,再走呗!!!
转载自:https://juejin.cn/post/7264920384901808184