一、背景:
- 公司项目由阿里Codeup托管,流水线也是通过codeup平台提供的步骤建立(codeup平台文档)。
- 项目是基于electron-vite脚手架创建
- 基于node:18.16.0,electron:25.6.0,electron-builder: 24.6.3
二、构建中主要解决的问题
- codeup提供的流水线中没有可以打包electron应用的模板,最后决定用自定义镜像构建了一个环境来打包。
- 构建镜像时,第一次是基于ubuntu:lastest镜像构建,那么就需要安装electron官网提到的一些环境,这个过程中经历了各种包拉取不到(可能因为我不太会用ubuntu),最后发现docker hub中有现成的构建electron的镜像--electronuserland/builder:wine。 使用的Dockerfile构建的初始镜像,Dockerfile内容如下:
# 使用ubuntu镜像方便切换源
FROM electronuserland/builder:wine
WORKDIR /app
# electron镜像源
ENV ELECTRON_MIRROR=http://npm.taobao.org/mirrors/electron/
RUN printenv
# 下载node18
RUN curl -fsSL https://deb.nodesource.com/gpgkey/nodesource.gpg.key | gpg --dearmor -o /usr/share/keyrings/nodesource-archive-keyring.gpg
RUN echo "deb [signed-by=/usr/share/keyrings/nodesource-archive-keyring.gpg] https://deb.nodesource.com/node_18.x focal main" | tee /etc/apt/sources.list.d/nodesource.list
# 安装node
RUN echo "deb-src [signed-by=/usr/share/keyrings/nodesource-archive-keyring.gpg] https://deb.nodesource.com/node_18.x focal main" | tee -a /etc/apt/sources.list.d/nodesource.list
RUN apt-get update
RUN apt-get install -y nodejs
- 基于这个Dockerfile构建的镜像终于可以打包electron项目了,然而在最终build的环节,electron-build哐哐哐下载了许多包,其中winCodeSign、i386、wine这三个总是无法成功下载(换源对这几个包似乎不起作用)。
- 最终根据这篇博客提供的方法思路,通过手动下载这几个包,提前解压到对应的缓存目录中解决了。
- 到这一步仍然还有一个问题就是构建的镜像在打包时会报如下错误
这个包我在本地镜像中安装时总是有4个 ports.ubuntu.com/xxx/binary-… 4类似路径的资源报404,但是如果通过流水线拉取镜像,在构建命令里运行这3三句就可以成功拉取并构建了。
dpkg --add-architecture i386
apt update
apt install -y wine64 wine32```
三、涉及的docker、ubuntu用到的一些命令记录
- 构建docker镜像的方法
- Dockerfile:上文中提到的Dockerfile文件,
docker build [OPTIONS] PATH | URL | -形成镜像 - 运行已有镜像,在镜像容器中进行操作,通过容器生成镜像,上文中手动下载包解压到镜像缓存容器中就是通过这种方式,十分方便。
docker commit -m "注释" 容器id 生成镜像名
- 镜像仓库:阿里云免费提供了镜像仓库网址
创建仓库后里面有详细的操作指南,根据指示就可以成功推送和使用镜像了
- 用mac M2芯片pull下来的electron-builder:win镜像在docker GUI中提示Image may have poor performance...,点旁边的运行按钮是跑不起来的,直接用命令行
docker run -it -v path:path 镜像id就可以跑。