基于Python镜像构建Docker镜像时遇gpg: no valid OpenPGP data found错误求助
解决Docker构建时
gpg: no valid OpenPGP data found错误 以下是针对问题的具体修复方案,核心是修正Chrome源配置、正确导入官方密钥,并调整废弃的apt命令用法:
错误原因分析
- Chrome源地址错误:原Dockerfile中写的
http://dl.google.com.linux/chrome/deb是无效地址,正确地址应为http://dl.google.com/linux/chrome/deb/ - 密钥导入方式问题:
apt-key add已被官方废弃,且你使用的本地key.pub可能无效或路径有误 - 命令语法错误:
apt-get update - y多了空格,且update命令不需要-y参数
修正后的Dockerfile
FROM python:3.10.6 as base # 修正文件复制路径:确保mydir内容放到正确位置 COPY requirements.txt . ADD mydir /mydir/ ADD tests /mydir/tests ADD src /mydir/src RUN python -m pip install --upgrade pip && \ pip install -r requirements.txt # 安装依赖并正确配置Chrome源 RUN apt-get update && \ apt-get install -y ca-certificates wget gnupg curl unzip --no-install-recommends && \ # 从Google官方获取并导入Chrome密钥,使用推荐的keyring方式 wget -q -O - https://dl.google.com/linux/linux_signing_key.pub | gpg --dearmor -o /usr/share/keyrings/google-chrome-keyring.gpg && \ # 写入正确的Chrome源,指定密钥环 echo "deb [arch=amd64 signed-by=/usr/share/keyrings/google-chrome-keyring.gpg] http://dl.google.com/linux/chrome/deb/ stable main" >> /etc/apt/sources.list.d/google.list && \ apt-get update && \ apt-get install -y google-chrome-stable && \ # 下载对应版本的ChromeDriver CHROMEVER=$(google-chrome --product-version | grep -o "[^\.]*\.[^\.]*\.[^\.]*") && \ DRIVERVER=$(curl -s "https://chromedriver.storage.googleapis.com/LATEST_RELEASE_$CHROMEVER") && \ wget -q --continue -P /chromedriver "https://chromedriver.storage.googleapis.com/$DRIVERVER/chromedriver_linux_64.zip" && \ unzip /chromedriver/chromedriver* -d /chromedriver && \ # 清理apt缓存减小镜像体积 rm -rf /var/lib/apt/lists/* # 安装Node.js、npm及Appium相关工具 RUN apt-get update && \ apt-get install -y nodejs npm && \ npm install -g appium appium-doctor && \ rm -rf /var/lib/apt/lists/* ENV PATH /chromedriver:$PATH ENV PYTHONPATH /mydir WORKDIR /mydir/tests/ ENTRYPOINT ["robot", "-d", "/test-results", "-C", "off"]
关键修改点说明
- 修正Chrome源地址:补充了正确的路径分隔符,确保源地址有效
- 密钥导入优化:直接从Google官方获取签名密钥,使用
gpg --dearmor写入密钥环,替代废弃的apt-key add - 清理缓存:添加
rm -rf /var/lib/apt/lists/*减少镜像体积,同时避免后续更新冲突 - 修复命令语法:移除
apt-get update后的无效-y参数 - 调整文件复制路径:修正
ADD mydir /mydir/workingdirectory为ADD mydir /mydir/,确保文件结构符合预期(如果你的原始路径确实需要workingdirectory,可以改回,但需确认本地文件结构)
另外,如果你坚持使用本地密钥文件,需要确保:
/mydir/src/keys/key.pub是有效的OpenPGP公钥文件(可以通过本地执行gpg --import key.pub验证)- 构建时该文件确实被复制到了镜像中的对应路径(可以在构建失败前添加
RUN cat /mydir/src/keys/key.pub查看内容)
内容的提问来源于stack exchange,提问作者Jin
相关产品推荐
相关产品推荐

