ARM上面Docker模式安装chrome以及chromedriver的过程


背景

公司里面有四台鲲鹏服务器
想通过ARM的自动化进行功能遍历走查.
前期提过需求, 但是同时调研之后发现比较困难,作罢了. 

最近清明假期. 想着能够实现以下.

最开始的思路

虽然网上有一个chromedriver的下载地址:
https://googlechromelabs.github.io/chrome-for-testing/#stable

上面有 chrome和chromedriver的部分二进制
但是没有linux on arm的介质, 所以这套四路暂时不通.

另外一个思路

通过rpmfind 查找对应版本的 chrome和chromedriver 的方式进行部署.
晚上没人打扰了在进行这个思路的验证:
wget http://rpmfind.net/linux/epel/8/Everything/aarch64/Packages/c/chromedriver-122.0.6261.128-1.el8.aarch64.rpm
wget http://rpmfind.net/linux/epel/8/Everything/aarch64/Packages/c/chromium-122.0.6261.128-1.el8.aarch64.rpm

需要注意, 一定是完全相同的版本才可以调用. 
现在好后可以通过如下命令下载依赖的 rpm 包 到本地. 
yum localinstall *.rpm --downloadonly --downloaddir=.

Docker容器化的思路

一开始同事选用的是ubuntu的思路.
我想专用centos的思路, 因为现在openeuler和anlios龙蜥都是CentOS路线.

适应一下国家的大方向. 
需要注意. CentOS8上面安装Docker的快捷方式为: 
curl https://download.docker.com/linux/centos/docker-ce.repo -o /etc/yum.repos.d/docker-ce.repo
yum install docker-ce -y
systemctl enable --now docker

第一步 下载模板镜像

注意需要再 下载rpm和部署docker建议都在arm机器上面

docker pull centos:centos8 
需要注意 如下两个命令是等效的
docker pull centos:centos8.4.2105

编写Dockerfile

FROM centos:centos8
RUN sed -i 's|#baseurl=http://mirror.centos.org|baseurl=http://vault.centos.org|g' /etc/yum.repos.d/CentOS-* && sed -i 's/mirrorlist/#mirrorlist/g' /etc/yum.repos.d/CentOS-*
COPY *.rpm /root/
RUN cd /root && yum localinstall *.rpm -y && rm -rf /root/*.rpm &&  yum clean all
ADD python3_aarch64_tar.gz /opt/
RUN ln -s /usr/bin/chromedriver /opt/python3/bin/chromedriver
RUN ln -s /usr/bin/chromium-browser /usr/bin/chrome

打包arm版本的chrome的镜像

docker build . -t node:aarch64 

说明:
因为CentOS已经停止服务了, 所以他的rpm下载地址出现了变化. 需要sed一下.
rpm包需要进行转移, 我发现没有downloadonly 的情况下部署比较困难. 

python3 是之前文档里面写好的 离线部署,并且安装好pip的. 
进行软连接可以实现命令的快速执行
chrome 和 chromium-browser 都是chrome 只不过一个是google官方,一个是开源的.