制作一个能构建 dotnet AOT 的 gitlab runner 的 Debian docker 镜像
内容提要
本文介绍了在Debian Docker镜像中构建dotnet AOT应用的方法,并配置GitLab Runner进行自动构建。作者使用了debian:buster-slim镜像,并安装了必要的依赖。然后下载了dotnet 8和dotnet 6的sdk压缩包,并解压到docker镜像中。接下来配置了GitLab Runner,并将配置文件打入docker镜像中。最后,作者提供了一些踩坑记录和解决方法。
关键要点
-
需求是构建 dotnet AOT 包的环境,解决 glibc 兼容依赖,支持 x64 和 arm64 包,能与 gitlab runner 对接。
-
使用 debian:buster-slim 镜像,替换为阿里源以提升拉取速度。
-
安装必要的依赖,包括 libicu-dev、libssl-dev、clang、llvm、gcc-aarch64-linux-gnu 等。
-
下载 dotnet 8 和 dotnet 6 的 sdk 压缩包,并解压到 docker 镜像中。
-
配置环境变量以便全局使用 dotnet 命令。
-
配置 gitlab runner,使用二进制压缩包并设置权限。
-
通过 docker 构建和运行镜像,注册 gitlab runner 并保存配置文件。
-
在 dockerfile 中添加已注册的 gitlab runner 配置,设置入口为 gitlab-runner run。
-
使用 podman 工具替代 docker desktop 进行构建和运行。
-
记录构建过程中的问题及解决方法,包括 glibc 版本不兼容、源配置错误等。
-
使用交叉编译技术在 x64 系统上构建 arm64 应用。
-
在 .gitlab-ci.yml 文件中指定构建任务,确保成功构建出可执行文件。
延伸问答
如何在Debian Docker镜像中构建dotnet AOT应用?
可以使用基于debian:buster-slim的Dockerfile,安装必要的依赖,下载dotnet SDK压缩包并解压,配置环境变量和GitLab Runner。
为什么选择debian:buster-slim作为基础镜像?
因为debian:buster-slim的glibc版本较低,适合构建可以在UOS和麒麟系统上运行的AOT包。
如何解决构建过程中glibc版本不兼容的问题?
通过使用debian:buster-slim镜像,确保构建环境的glibc版本与目标系统兼容。
如何配置GitLab Runner与Docker镜像对接?
下载GitLab Runner的二进制压缩包,拷贝到Docker镜像中,并配置相关权限和配置文件。
在Dockerfile中如何设置dotnet命令的全局使用?
通过设置环境变量DOTNET_ROOT和PATH,并使用ln命令创建dotnet的符号链接。
如何使用交叉编译技术构建ARM64应用?
在x64系统上添加arm64架构支持,安装必要的依赖,并在构建时指定-r参数为linux-arm64。