如何使用kpack CLI在无Dockerfile构建的镜像中添加外部依赖包(以Alpine字体FONTX为例)
如何使用kpack CLI在无Dockerfile构建的镜像中添加外部依赖包(以Alpine字体FONTX为例)
嘿,我完全懂你这种痛点——用kpack无Dockerfile构建确实省心,但要加个依赖包就卡壳了,之前用blob的方式既不优雅又难维护,版本可控才是长远之计!
其实kpack底层基于CNCF Buildpacks,官方就有专门针对Alpine系统安装apk包的buildpack,我们可以通过**project.toml**配置文件来实现需求,这个文件能直接放到Git仓库里,和代码一起版本管理,完美解决你的问题。
具体操作步骤:
在Git项目根目录创建
project.toml配置文件
这个文件会告诉kpack在构建流程中自动执行apk安装操作,内容如下:[project] id = "com.yourcompany.yourproject" # 自定义项目标识,随便填写也可 name = "Your Project" # 自定义项目名称 version = "1.0.0" # 自定义版本号 # 指定官方的apk安装buildpack [[build.buildpacks]] id = "paketo-buildpacks/apk" version = "latest" # 设置要安装的apk包,多个包用空格分隔即可 [[build.env]] name = "APK_PACKAGES" value = "FONTX"提交配置文件到Git仓库
把project.toml推送到你的$GITURL仓库对应的分支,这样kpack构建时就能自动读取到这个配置。用原命令重新构建镜像
命令不需要修改,kpack会自动识别Git仓库里的project.toml并执行安装步骤:kp image save $MYIMAGE --tag MYREGISTRY/MYREPO/MYIMAGE:MYTAG --git $GITURL --git-revision $GIT_COMMIT
临时测试的快捷方式:
如果只是临时验证,不想改动Git仓库,也可以直接在命令行通过参数指定buildpack和环境变量,但这种方式不适合长期维护:
kp image save $MYIMAGE --tag MYREGISTRY/MYREPO/MYIMAGE:MYTAG --git $GITURL --git-revision $GIT_COMMIT --buildpack paketo-buildpacks/apk@latest --env APK_PACKAGES=FONTX
验证安装结果
构建完成后,你可以进入镜像检查是否安装成功:
docker run --rm MYREGISTRY/MYREPO/MYIMAGE:MYTAG apk info FONTX
如果能看到FONTX包的详细信息,就说明安装成功啦!
备注:内容来源于stack exchange,提问作者Roberto
相关产品推荐
相关产品推荐

