在 ARM 设备上构建 Docker 映像:如何解决 Microsoft ODBC Driver 18 构建错误
2024-03-20 12:07:07
在 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 公钥:
- 下载公钥:
curl https://packages.microsoft.com/keys/microsoft.asc > microsoft.asc
- 验证公钥:
gpg --verify microsoft.asc
- 将公钥添加到信任存储:
sudo mv microsoft.asc /etc/apt/trusted.gpg.d/microsoft.gpg
- 更新软件包列表:
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:因为此标志会绕过安全检查,从而增加安全风险。