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

Docker构建镜像时执行gpg --list-keys进程挂起问题求助

解决Docker构建中gpg --import挂起的问题

问题原因

Docker构建阶段的RUN指令运行在无TTY的非交互式环境中,而Alpine的gnupg在执行--import时,默认会尝试等待用户确认密钥信任操作,没有交互输入就会一直挂起。手动进入容器时是交互式终端,有TTY支持,所以命令能正常执行。

解决方案

给gpg --import添加--batch参数,强制命令在非交互式模式下运行,跳过所有需要用户输入的步骤:

修正后的Dockerfile:

FROM alpine:3
COPY public.asc /
RUN apk add --no-cache gnupg openssh && ssh-keygen -A && mkdir /root/.ssh
COPY entrypoint.sh /
# 用--batch参数避免交互式等待
RUN gpg --batch --import /public.asc
ENTRYPOINT ["/entrypoint.sh"]
EXPOSE 22/tcp

如果需要自动信任导入的密钥,可追加--trust-model always参数:

RUN gpg --batch --trust-model always --import /public.asc

补充说明

这不是对Docker构建逻辑的误解,只是忽略了gpg命令的交互式特性。Docker的RUN、CMD等指令默认都在非交互式环境执行,所有需要用户输入的命令都需显式添加非交互式参数才能正常运行。

内容的提问来源于stack exchange,提问作者Remi

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.16 05:22:06