最近需要将某docker项目从centos系统迁移到alpine中,因此需要重新编译项目;参考国外某些案例已写好Dockerfile和build.sh中,这里对其主要过程分解并记录一下。
1. 构建发布压缩包
该步骤主要同项目构建过程相关,需要根据不同情况进行编译;
# 1.make distribution tar.gz
./bootstrap.sh
./configure --with-pkg-extra-version=-r1
make dist
#会发现目录中生成XXX-MyVersion.tar.gz的源码压缩包
这一步主要是构建代码编译采用的压缩包,确认版本号等过程;读者可以在宿主机上编译出压缩包或编写到Dockerfile和脚本,FROM alpine:edge as source-builder,并在其中安装所需依赖.
2. 编写APKBUILD等文件
构建.apk包的时候,需要编写自己的APKBUILD文件和其他文件,如下图所示,其中frr为本文需要构建安装包的项目;.pre-install和pre-deinstall等文件,是安装和卸载apk包时所执行脚本;APKBUILD.in为生成APKBUILD文件的模板文件;编写APKBUILD文件时,检查项目中dep依赖库包可以通过alpinelinux官方地址查询。

读者也可以参考abuild官方gitlab地址某标准案例:https://gitlab.alpinelinux.org/alpine/abuild/-/blob/master/sample.APKBUILD。
根据项目实际情况,编写shell脚本以及其中必须的函数prepare(),build(),package(),check();具体可以索引到参考文章alpinelinux的abuild中APKBUILD设置
3. 创建alpine编译容器
#拉取镜像
docker pull alpine:edge
docker run -itd --name alpine-builder alpine:edge
#登录容器
docker exec -it alpine-builder sh
#配置源,如果源慢,可根据依赖库更换国内源;
echo 'http://dl-cdn.alpinelinux.org/alpine/edge/testing' >> /etc/apk/repositories
#安装构建依赖包,使用本地缓存,升级资源库缓存
apk add --update-cache abuild alpine-conf alpine-sdk py-pip
pip

本文详述了如何在 Alpine Linux 上构建 .apk 安装包,包括构建压缩包、编写 APKBUILD 文件、创建编译容器、准备构建环境及解决常见错误,适用于 Docker 项目迁移场景。
最低0.47元/天 解锁文章
2054

被折叠的 条评论
为什么被折叠?



