Dockfile文件内容
FROM adoptopenjdk/openjdk11:debian-slim
LABEL maintainer=Celine.Z
ADD Apache_OpenOffice_4.1.8_Linux_x86-64_install-deb_en-US.tar.gz /tmp/
#ADD SiYuanSongTiRegular.tar.gz /usr/share/fonts
RUN cd /tmp/en-US/DEBS/ && \
dpkg -i *.deb && \
cd desktop-integration && \
dpkg -i openoffice4.1-debian-menus*.deb && \
apt-get -y update && \
apt-get -y upgrade && \
apt-get install --allow-downgrades -y libxext6 procps xserver-xorg-legacy x-window-system-core && \
rm -rf /tmp/en-US && \
apt-get update && \
apt-get upgrade && \
#apt-get install --allow-downgrades -y ttf-mscorefonts-installer
apt-get install --allow-downgrades -y fonts-dejavu-core fonts-wqy-zenhei && \
#cd /usr/share/fonts && \
#chmod -R 755 /usr/share/fonts && \
#mkfontscale && \
#mkfontdir && \
#fc-cache -fv && \
apt-get clean && \
apt-get autoclean && \
apt-get update && \
apt-get upgrade
解析:
- 基于一个JDK镜像adoptopenjdk/openjdk11:debian-slim,可以去看docker hub上这个jdk镜像的步骤,可以发现安装了JDK及fontconfig等
FROM adoptopenjdk/openjdk11:debian-slim
- 设置镜像标签
LABEL maintainer=Celine.Z
- 将OpenOffice4的DEB安装包添加至/tmp目录下。
注意:我是通过将包下载至本地,和Dockfile文件放置在一个目录来构建的,也可以通过直接文件里面命令下载的方式。ADD命令有自动解压的效果。
ADD Apache_OpenOffice_4.1.8_Linux_x86-64_install-deb_en-US.tar.gz /tmp/
- 添加自己的中文字体,此方法我最终没有使用,故注释掉,需要安装自己字体的可以使用。
#ADD SiYuanSongTiRegular.tar.gz /usr/share/fonts
- 运行RUN命令
切换至/tmp/en-US/DEBS/和/tmp/en-US/DEBS/desktop-integration/目录,将下面的deb包用dpkg命令安装
RUN cd /tmp/en-US/DEBS/ && \
dpkg -i *.deb && \
cd desktop-integration && \
dpkg -i openoffice4.1-debian-menus*.deb && \
运行apt-get命令前最好执行一下两命令,否则会出现找不到包的情况; -y是如果有更新,需输入y同意,在dockerfile脚本中最好添一个-y,否则脚本文件执行可能报错。
apt-get -y update && \
apt-get -y upgrade && \
a. 安装libxext6,否则报debian error while loading shared libraries: libXext.so.6错误。
b. 安装procps, 否则代码使用openoffice4时报pid not found错误,而进入容器则发现能启动。通过trace打印,发现报 Command Error: /bin/sh: 1: /bin/ps: not found导致。
c. 安装xserver-xorg-legacy为啥不记得了,这个包好像用于远程调用。
d. 安装 x-window-system-core,否则启动会报no suitable windowing system found, exiting。
apt-get install --allow-downgrades -y libxext6 procps xserver-xorg-legacy x-window-system-core && \
删除OpenOffice4解压缩后的包
rm -rf /tmp/en-US && \
更新
apt-get update && \
apt-get upgrade && \
安装中(wqy-zenhei,文泉驿正黑)英(dejavu)文字体
apt-get install --allow-downgrades -y fonts-dejavu-core fonts-wqy-zenhei && \
手动安装字体,出现mkfontscale,mkfontdir 命令找不着时,安装ttf-mscorefonts-installer。注意先要执行上一步的update操作。(我实际未用,故命令注释掉)
#apt-get install --allow-downgrades -y ttf-mscorefonts-installer
若要手动安装字体,切换至fonts目录,并修改目录权限,生成font.scale,font.dir文件,刷新字体列表。(我实际未用,故命令注释掉)
#cd /usr/share/fonts && \
#chmod -R 755 /usr/share/fonts && \
#mkfontscale && \
#mkfontdir && \
#fc-cache -fv && \
清除安装过程中的残余,并更新
apt-get clean && \
apt-get autoclean && \
apt-get update && \
apt-get upgrade
- 另外由于我这个包是打算和程序一起使用的,故没有EXPOSE端口与ENTRYRPOINT或CMD设置启动执行命令的命令。可以自己设置,如:
EXPOSE 8100
ENTRYPOINT ["/opt/openoffice4/program/soffice", "-headless" ,"-nofirststartwizard", "-accept=\"socket,host=0.0.0.0,port=8100;urp;\""]
构建OpenOffice4 Docker镜像:基于Debian与Dockerfile详解
这篇博客详细介绍了如何使用Dockfile构建一个基于Debian的OpenOffice4 Docker镜像。首先,它依赖于一个预装了JDK和fontconfig的adoptopenjdk/openjdk11:debian-slim镜像。接着,通过ADD命令将OpenOffice4的DEB安装包放入镜像,并执行dpkg命令进行安装。在安装过程中,还需要添加额外的库,例如libxext6、procps、xserver-xorg-legacy和x-window-system-core,以解决依赖问题。此外,还讨论了字体安装和清理过程,但某些步骤在博主的实际构建中并未使用。最后,博主指出这个镜像是为了配合其他程序使用,因此未设置EXPOSE端口和启动命令。
1084






