[root@localhost ~]# lscpu
架构: aarch64
CPU 运行模式: 64-bit
字节序: Little Endian
CPU: 4
在线 CPU 列表: 0-3
每个核的线程数: 1
每个座的核数: 1
座: 4
NUMA 节点: 1
厂商 ID: HiSilicon
型号: 0
型号名称: Kunpeng-920
[root@localhost ~]# arch
aarch64
[root@localhost ~]#
[root@localhost ~]# cat /etc/.productinfo
Kylin Linux Advanced Server
release V10 (SP2) /(Sword)-aarch64-Build09/20210524
[root@localhost ~]# docker version
Client: Docker Engine - Community
Version: 20.10.9
API version: 1.41
Go version: go1.16.8
Git commit: c2ea9bc
Built: Mon Oct 4 16:08:21 2021
OS/Arch: linux/arm64
Context: default
Experimental: true
Server: Docker Engine - Community
Engine:
Version: 20.10.21
API version: 1.41 (minimum version 1.12)
Go version: go1.18.7
Git commit: 3056208
Built: Tue Oct 25 17:59:35 2022
OS/Arch: linux/arm64
Experimental: false
containerd:
Version: 1.6.9
GitCommit: 1c90a442489720eec95342e1789ee8a5e1b9536f
runc:
Version: 1.0.0-rc3
GitCommit: fabf83fd21f205c801571df4074024179eb03b44
docker-init:
Version: 0.19.0
GitCommit: de40ad0
FROM ubuntu:20.04
RUN set -ex \
apt clean -y &&\
apt update -y &&\
apt install -y apt-transport-https ca-certificates
COPY fonts/* /usr/share/fonts/chinese/
COPY sources.list /etc/apt/sources.list
ADD apache-ant-1.10.12-bin.tar.gz /opt/
ADD OpenJDK11U-jdk_aarch64_linux_hotspot_11.0.17_8.tar.gz /opt/
RUN set -ex \
apt clean -y &&\
apt update -y &&\
apt upgrade -y &&\
apt install -y locales &&\
apt install -y language-pack-zh-hans &&\
localedef -i zh_CN -c -f UTF-8 -A /usr/share/locale/locale.alias zh_CN.UTF-8 &&\
locale-gen zh_CN.UTF-8 &&\
export DEBIAN_FRONTEND=noninteractive &&\
apt-get install -y tzdata &&\
ln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime &&\
apt install -y libxrender1 &&\
apt install -y libxt6 &&\
apt install -y libxext-dev &&\
apt install -y libfreetype6-dev &&\
apt install -y wget &&\
apt install -y ttf-mscorefonts-installer &&\
apt install -y fontconfig &&\
apt install ttf-wqy-microhei &&\
apt install ttf-wqy-zenhei &&\
apt install xfonts-wqy &&\
rm -rf /var/lib/apt/lists/*
[root@localhost ~]# docker build -t u20:v1 .
# 进入容器编译
[root@localhost ~]# docker run -itd --name test u20:v1
[root@localhost ~]# docker exec -it test bash
# ubuntu 系统更新
root@294c18513f62:/# cd /opt
root@294c18513f62:/# apt update
root@294c18513f62:/# apt upgrade -y
# 准备java ant环境
# 给环境变量加上,在前面Dockerfile 里做也行
root@294c18513f62:/opt# vim /etc/profile
# java
export JAVA_HOME=/opt/jdk-11.0.17+8
export PATH=$PATH:$JAVA_HOME/bin
export CLASSPATH=$JAVA_HOME/lib
# ant
export ANT_HOME=/opt/apache-ant-1.10.12
export PATH=$PATH:$ANT_HOME/bin
root@294c18513f62:/opt# source /etc/profile
root@294c18513f62:/opt# java -version
openjdk version "11.0.17" 2022-10-18
OpenJDK Runtime Environment (build 11.0.17+8-post-Ubuntu-1ubuntu220.04)
OpenJDK 64-Bit Server VM (build 11.0.17+8-post-Ubuntu-1ubuntu220.04, mixed mode)
root@294c18513f62:/opt# java -version
openjdk version "11.0.17" 2022-10-18
OpenJDK Runtime Environment (build 11.0.17+8-post-Ubuntu-1ubuntu220.04)
OpenJDK 64-Bit Server VM (build 11.0.17+8-post-Ubuntu-1ubuntu220.04, mixed mode)
# 准备源码
root@294c18513f62:/opt# mkdir -p src && cd src
root@294c18513f62:/opt/src# apt install ccache
root@294c18513f62:/opt/src# ccache -M 10G
root@294c18513f62:/opt/src# apt install git
root@294c18513f62:/opt/src# git clone --depth=1 --branch libreoffice-7-1 git://go.suokunlong.cn/lo/core ./libreoffice-7-1
root@294c18513f62:/opt/src# cd libreoffice-7-1/
root@294c18513f62:/opt/src/libreoffice-7-1# git submodule init
root@294c18513f62:/opt/src/libreoffice-7-1# git submodule update --progress --depth=1
# 准备编译参数
root@294c18513f62:/opt/src/libreoffice-7-1# vim autogen.input
--without-help
--without-helppack-integration
--with-lang=zh-CN zh-TW
--disable-online-update
--disable-breakpad
--disable-odk
--without-doxygen
--enable-epm
--with-package-format=deb
#--without-java
--enable-firebird-sdbc
--without-system-firebird
--enable-python=internal
# 搞依赖 这里是最最脑裂的,这里是脑裂n次之后的结果
# 中间有些包是需要交互选择的,需要手动处理下
root@294c18513f62:/opt/src/libreoffice-7-1# apt -y install \
autoconf \
pkg-config \
patch \
automake \
make \
gcc \
fakeroot \
libcups2-dev \
ccache \
fontconfig \
libfontconfig1-dev \
gperf \
xine-ui \
libxslt-dev \
xsltproc \
libxml2 \
libxml2-utils \
libkrb5-dev \
libice-dev \
gnome-devel \
gnome-devel-docs \
libx11-dev \
libxext-dev \
libxrender-dev \
libxtst-dev \
libxt-dev \
flex \
zip \
libgstreamer* \
junit4
# 编译
# 这里可能会丢失环境变量,需要再刷一次
root@294c18513f62:/opt/src/libreoffice-7-1# source /etc/profile
root@294c18513f62:/opt/src/libreoffice-7-1# echo $JAVA_HOME
root@294c18513f62:/opt/src/libreoffice-7-1# ./autogen.sh
# 去公网拉依赖,打包
# 这里需要的时间非常之久,建议给配置拉高才行,我这里32C、6G,基本全部跑满,最好能给多高给多高。
root@294c18513f62:/opt/src/libreoffice-7-1# make
root@294c18513f62:/opt/src/libreoffice-7-1# find ./ -name "*.deb" -type f
# 嗯,从这里开始TM 问题就各式各样的,呃,FUCK FUCK FUCK...。
# 在dockerhub.com 仓库里找到个arm64 版本的kkfileview,那还犹豫啥直接替换jar包就干。
# jerryjshi/kkfileview:4.0.0
# 大概看了下他的Dockerfile,应该是用的带jdk环境的arm64 版本的ubuntu,然后那个liberoffice 不知是从哪里搞到的,看起来就是二进制文件拷贝进去的,其他内容差不多,不过应该是对官方Dockerfile 有所精简的。
ADD file:ff4909f2124325dac58d43c617132325934ed48a5ab4c534d05f931fcf700a2f in /
CMD ["bash"]
ADD file:890cc0dd111650f2a7c7e7944c3ba2685c671ed34fcbff87ac8e70760a852a30 in /opt/
COPY multi:fa61a324d8ed8030c7f8a3ad693c40807474b4a02cc649ade643f474ae5da374 in /usr/share/fonts/chinese/
RUN sed -i 's#ports.ubuntu.com#mirrors.tuna.tsinghua.edu.cn#' /etc/apt/sources.list && \
apt-get clean && \
apt-get update && \
apt-get install -y locales && \
apt-get install -y language-pack-zh-hans && \
localedef -i zh_CN -c -f UTF-8 -A /usr/share/locale/locale.alias zh_CN.UTF-8 && \
locale-gen zh_CN.UTF-8 && \
apt-get install -y tzdata && \
ln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime && \
apt-get install -y libxrender1 && \
apt-get install -y libxt6 && \
apt-get install -y libxext-dev && \
apt-get install -y libfreetype6-dev && \
apt-get install -y wget curl && \
apt-get install -y ttf-mscorefonts-installer && \
apt-get install -y fontconfig && \
apt-get install ttf-wqy-microhei && \
apt-get install ttf-wqy-zenhei && \
apt-get install xfonts-wqy && \
apt-get install -y openjdk-8-jre && \
cd /tmp && \
rm -rf /tmp/* && \
rm -rf /var/lib/apt/lists/* && \
cd /usr/share/fonts/chinese && \
mkfontscale && \
mkfontdir && \
fc-cache -fv
RUN apt-get update && \
apt install -y libxinerama1 libcairo2 libcups2 libx11-xcb1 libxslt1-dev
COPY dir:004a3b0724d3b307c7a1ff97338b61ee5165019d9921e6feb5482c11a47e0ab1 in /opt/libreoffice-7.3.2.2
ENV KK_OFFICE_HOME=/opt/libreoffice-7.3.2.2
ENV LANG=zh_CN.UTF-8
ENV LC_ALL=zh_CN.UTF-8
ENV KKFILEVIEW_BIN_FOLDER=/opt/kkFileView-4.0.0/bin
ENTRYPOINT ["java" "-Dfile.encoding=UTF-8" "-Dspring.config.location=/opt/kkFileView-4.0.0/config/application.properties" "-jar" "/opt/kkFileView-4.0.0/bin/kkFileView-4.0.0.jar"]
# 用他的运行环境再次构建自己的镜像
$ cat Dockerfile
FROM jerryjshi/kkfileview:4.0.0
RUN rm /opt/kkFileView-4.0.0 -rf
ADD server/target/kkFileView-*.tar.gz /opt/
ENV KKFILEVIEW_BIN_FOLDER=/opt/kkFileView-4.1.0-SNAPSHOT/bin
EXPOSE 8012
ENTRYPOINT [ \
"java", \
"-Dfile.encoding=UTF-8", \
"-Dspring.config.location=/opt/kkFileView-4.1.0-SNAPSHOT/config/application.properties", \
"-jar", \
"/opt/kkFileView-4.1.0-SNAPSHOT/bin/kkFileView-4.1.0-SNAPSHOT.jar" \
]
# docker-compose 启动测试
$ cat docker-compose.yml
---
version: '3.8'
services:
kkfileview:
image: arm64-kkfileview:4.1.0
container_name: kkfileview
network_mode: host
ports:
- '8012:8012'
restart: always
volumes:
- "/etc/localtime:/etc/localtime:ro"
- "./application.properties:/opt/kkFileView-4.1.0-SNAPSHOT/config/application.properties"
正迈入系统全套国产化的深坑之中…苦不堪言