docker 镜像构建中 apt 公钥出现问题

docker 镜像构建中 apt 公钥出现问题

我在将 PHP 映像从 8.0 升级到 PHP 映像 8.1 后遇到问题,并且在 stackoverflow 上他们将我发送到那里

这是我的 dockerfile:

FROM php:8.1-apache AS apache
RUN a2enmod rewrite

WORKDIR /bin
WORKDIR ../

RUN apt-key adv --keyserver keyserver.ubuntu.com --recv-keys 0E98404D386FA1D9 6ED0E7B82643E131 F8D2585B8783D481 BDE6D2B9216EC7A8

RUN apt update \
    && apt install \
    curl \
    git \
    unzip \
    cron \
    libzip-dev \
    libcurl4-openssl-dev \
    pkg-config \
    libssl-dev \
    libpng-dev \
    libjpeg62-turbo-dev \
    libicu-dev \
    wget \
    libcap2-bin \
    procps \
    -y \
    && setcap 'cap_net_bind_service=+ep' /usr/sbin/apache2 \
    && chown www-data:www-data /var/log/apache2 \
    && wget https://github.com/wkhtmltopdf/packaging/releases/download/0.12.6.1-3/wkhtmltox_0.12.6.1-3.bookworm_amd64.deb \
    && apt install -y ./wkhtmltox_0.12.6.1-3.bookworm_amd64.deb \
    && rm wkhtmltox_0.12.6.1-3.bookworm_amd64.deb \
    && apt-get clean autoclean \
    && apt-get autoremove --yes
    etc...

在图像构建过程中我遇到错误;

[0mGet:1 http://deb.debian.org/debian bookworm InRelease [151 kB]
Get:2 http://deb.debian.org/debian bookworm-updates InRelease [52.1 kB]
Get:3 http://deb.debian.org/debian-security bookworm-security InRelease [48.0 kB]
Err:1 http://deb.debian.org/debian bookworm InRelease
  The following signatures couldn't be verified because the public key is not available: NO_PUBKEY 0E98404D386FA1D9 NO_PUBKEY 6ED0E7B82643E131 NO_PUBKEY F8D2585B8783D481
Err:2 http://deb.debian.org/debian bookworm-updates InRelease
  The following signatures couldn't be verified because the public key is not available: NO_PUBKEY 0E98404D386FA1D9 NO_PUBKEY 6ED0E7B82643E131
Err:3 http://deb.debian.org/debian-security bookworm-security InRelease
  The following signatures couldn't be verified because the public key is not available: NO_PUBKEY 54404762BBB6E853 NO_PUBKEY BDE6D2B9216EC7A8

如果我添加行:

RUN apt-key adv --keyserver keyserver.ubuntu.com --recv-keys 0E98404D386FA1D9 6ED0E7B82643E131 F8D2585B8783D481 BDE6D2B9216EC7A8

有错误:

[91mE: gnupg, gnupg2 and gnupg1 do not seem to be installed, but one of them is required for this operation

如果我在 dockerfile 中添加 gnupg 的 apt 安装程序...公钥也会出现相同的错误,所以我无法安装它

我应该怎么办?

答案1

当我尝试你的 Dockerfile 时,我没有收到丢失密钥的错误。我把RUN apt-key ...线去掉了,剩下的就可以了。也许php:8.1-apache在您写这个问题时存在错误。

由于很难测试无法复制的问题的解决方案,因此我只有一个建议:您可以从工作系统中获取关键文件,然后将它们复制到映像中(它们应该位于 中/etc/apt/trusted.gpg.d/)。这应该会恢复到工作状态。

其他应该有效的选项:

  1. 如果您已经拥有可用软件包的有效本地缓存,您只需(重新)安装debian-archive-keyring包含文件的软件包即可。但在新的 Docker 镜像上,这是不可能的。

  2. 您只需下载debian-archive-keyring.deb从镜像中获取文件并手动安装。

相关内容