返回

在 ARM 设备上构建 Docker 映像:如何解决 Microsoft ODBC Driver 18 构建错误

Linux

在 ARM 设备上构建 Docker 映像:使用 Microsoft ODBC Driver 18 的 Python Docker 映像

引言

在 ARM 设备上构建 Docker 映像以运行 Python 应用程序时,您可能会遇到与 Microsoft ODBC Driver 18 相关的构建错误。本文将逐步指导您如何解决此问题,并提供优化建议,以帮助您成功构建映像。

问题

在使用 Dockerfile 构建 Python Docker 映像时,您可能遇到以下构建错误:

Err:4 https://packages.microsoft.com/debian/12/prod bookworm InRelease
  The following signatures couldn't be verified because the public key is not available: NO_PUBKEY EB3E94ADBE1229CF

此错误表明未找到验证 Microsoft 存储库中软件包所需的公钥。

解决方法

要解决此问题,需要手动安装 Microsoft 公钥:

  1. 下载公钥:curl https://packages.microsoft.com/keys/microsoft.asc > microsoft.asc
  2. 验证公钥:gpg --verify microsoft.asc
  3. 将公钥添加到信任存储:sudo mv microsoft.asc /etc/apt/trusted.gpg.d/microsoft.gpg
  4. 更新软件包列表:sudo apt-get update

优化建议

使用正确的 ODBC 驱动程序版本

确保使用与您的 ARM 设备兼容的 ODBC 驱动程序版本。对于 ARM,支持 ODBC Driver 18,但 ODBC Driver 17 不支持。

使用安全存储库

始终使用安全的软件包存储库来安装软件。 Microsoft 提供了一个签名密钥,可用于验证软件包的完整性。

使用 --allow-insecure-repositories

如果遇到由于未验证的存储库而导致的错误,您可以使用 --allow-insecure-repositories 标志来强制安装。但是,不建议这样做,因为这会增加安全风险。

结论

通过安装 Microsoft 公钥并更新软件包列表,您可以成功在 ARM 设备上构建包含 Microsoft ODBC Driver 18 的 Docker 映像。请记住,使用安全存储库并验证软件包的完整性对于保持安全至关重要。

常见问题解答

Q:为什么会出现公钥不可用的错误?
A:这是因为 Microsoft 存储库的公钥不在您的系统上。

Q:如何验证公钥的有效性?
A:使用 gpg --verify 命令验证下载的公钥是否有效。

Q:在构建映像时是否始终需要添加公钥?
A:仅当使用 Microsoft 软件包存储库时才需要添加公钥。

Q:如何更新 Microsoft 软件包列表?
A:使用 sudo apt-get update 命令更新 Microsoft 软件包列表。

Q:为什么不建议使用 --allow-insecure-repositories 标志?
A:因为此标志会绕过安全检查,从而增加安全风险。