制作一个能构建 dotnet AOT 的 gitlab runner 的 Debian docker 镜像

💡 原文中文,约15600字,阅读约需38分钟。
📝

内容提要

本文介绍了在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。

🏷️

标签

➡️

继续阅读