You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Docker构建基于Debian的PHP容器时安装SQL Server驱动失败,提示apt-key: not found

Docker构建基于Debian的PHP容器时安装SQL Server驱动失败,提示apt-key: not found

我之前也踩过一模一样的坑!最近官方的Debian系镜像(包括你用的php:8.2-apache)已经把apt-key工具彻底移除了——这个工具早就被Debian官方标记为废弃,现在连预装都取消了,这就是你看到apt-key: not found错误的直接原因。

不用慌,只要把密钥导入的方式换成现在Debian推荐的新方法就行,具体改法如下:

核心修改点:替换apt-key导入密钥的命令

原来的curl https://packages.microsoft.com/keys/microsoft.asc | apt-key add -已经不能用了,现在需要用gpg --dearmor把微软的明文密钥转换成GPG二进制格式,然后放到/etc/apt/trusted.gpg.d/目录下(这是Debian现在推荐的“每个源对应单独密钥文件”的规范方式)。

给你改好的完整RUN代码块

把你Dockerfile里那个出问题的RUN段替换成下面这段:

# Install prerequisites for the sqlsrv and pdo_sqlsrv PHP extensions.
# 替换了密钥导入方式,适配新的Debian镜像要求
RUN curl https://packages.microsoft.com/keys/microsoft.asc | gpg --dearmor > /etc/apt/trusted.gpg.d/microsoft.gpg \
    && curl https://packages.microsoft.com/config/debian/11/prod.list > /etc/apt/sources.list.d/mssql-release.list \
    && echo "Package: unixodbc\nPin: origin \"packages.microsoft.com\"\nPin-Priority: 100\n" >> /etc/apt/preferences.d/microsoft \
    && echo "Package: unixodbc-dev\nPin: origin \"packages.microsoft.com\"\nPin-Priority: 100\n" >> /etc/apt/preferences.d/microsoft \
    && echo "Package: libodbc1:amd64\nPin: origin \"packages.microsoft.com\"\nPin-Priority: 100\n" >> /etc/apt/preferences.d/microsoft \
    && echo "Package: odbcinst\nPin: origin \"packages.microsoft.com\"\nPin-Priority: 100\n" >> /etc/apt/preferences.d/microsoft \
    && echo "Package: odbcinst1debian2:amd64\nPin: origin \"packages.microsoft.com\"\nPin-Priority: 100\n" >> /etc/apt/preferences.d/microsoft \
    && apt-get update \
    && apt-get install -y msodbcsql18 mssql-tools18 unixodbc-dev \
    && rm -rf /var/lib/apt/lists/*

额外注意事项

还有个小细节要检查:你用的php:8.2-apache镜像可能已经悄悄更新到基于Debian 12(Bookworm)了,但你配置的微软源还是debian/11(Bullseye)。如果替换密钥后还是有问题,建议:

  • 要么把源地址改成https://packages.microsoft.com/config/debian/12/prod.list,适配Debian 12版本
  • 要么直接固定镜像的Debian版本,比如用FROM php:8.2-apache-bullseye来强制用Debian 11的基础镜像,避免自动更新带来的版本不匹配问题。

这样改完之后,再构建镜像应该就能顺利通过那个步骤了,我自己之前就是这么解决的~

内容来源于stack exchange

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.07 09:28:06