我在将 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/
)。这应该会恢复到工作状态。
其他应该有效的选项:
如果您已经拥有可用软件包的有效本地缓存,您只需(重新)安装
debian-archive-keyring
包含文件的软件包即可。但在新的 Docker 镜像上,这是不可能的。您只需下载
debian-archive-keyring
.deb从镜像中获取文件并手动安装。