
eskhome/alpine该工具包含一组Shell脚本,用于自动化从Alpine Linux官方网站获取最新稳定版本的minirootfs文件,通过GPG签名验证文件完整性,生成Dockerfile并构建、推送Docker镜像。适用于需要持续维护Alpine基础镜像为最新版本的开发和运维场景,支持每日定时执行以实现自动化更新。
负责版本获取、文件下载、签名验证和Dockerfile生成的核心流程。
'replaceMe'替换为实际正则表达式:'(?<=\<strong\>).*?(?=\<\/strong\>)'(用于提取版本号)wget、curl、gpg、bash负责Docker镜像的构建和仓库推送,需配置sudo权限以无密码执行。
dockerUser/alpine:minirootfs-3.18.3)dockerUser/alpine:latest)dockerUser替换为实际Docker仓库用户名sudo apt install wget curl gnupg2 docker.io(Debian/Ubuntu示例)docker login)修改get_alpine.sh:
bash# 找到版本提取行,替换'replaceMe'为实际正则表达式 _version=$(curl [***] | grep "Current Alpine Version" - | grep -oP '(?<=\<strong\>).*?(?=\<\/strong\>)')
修改buildandpush.sh:
bash# 将所有'dockerUser'替换为实际Docker用户名 docker build --no-cache=true -t your-docker-username/alpine:minirootfs-${_version} "./alpine-minirootfs-${_version}" docker build -t your-docker-username/alpine:latest "./alpine-minirootfs-${_version}" docker push your-docker-username/alpine:minirootfs-${_version} docker push your-docker-username/alpine:latest
配置sudo权限:
bash# 使用visudo编辑sudoers文件 sudo visudo # 添加如下行(替换username和脚本路径) username ALL=(ALL) NOPASSWD: /path/to/buildandpush.sh
准备工作:
bash# 赋予脚本执行权限 chmod +x get_alpine.sh buildandpush.sh
手动执行:
bash# 运行主脚本 ./get_alpine.sh
定时任务配置(可选):
bash# 添加每日定时执行(每天凌晨2点) crontab -e # 添加以下行(替换脚本路径和日志路径) 0 2 * * * /path/to/get_alpine.sh >> /var/log/alpine-build.log 2>&1
bash_version=$(curl [***] | grep "Current Alpine Version" - | grep -oP '(?<=\<strong\>).*?(?=\<\/strong\>)')
通过curl获取Alpine下载页面HTML,使用grep匹配"Current Alpine Version"所在行,再通过Perl兼容正则表达式提取<strong>标签内的版本号文本。
bash# 下载签名文件 wget [***]{_file}.asc # 验证文件签名 gpg --verify "${_file}.asc" "${_file}"
仅当签名验证通过时才继续后续流程,确保下载的minirootfs文件未被篡改且来源于官方发布。
bash{ echo FROM scratch echo ADD \"${_file}\" / echo "RUN apk update; apk upgrade" } > "alpine-minirootfs-${_version}/Dockerfile"
基于空白镜像(scratch)构建,直接添加minirootfs文件系统,并执行系统更新以确保包含最新安全补丁。

manifest unknown 错误
TLS 证书验证失败
DNS 解析超时
410 错误:版本过低
402 错误:流量耗尽
身份认证失败错误
429 限流错误
凭证保存错误
来自真实用户的反馈,见证轩辕镜像的优质服务