在Dockerfile构建期间删除$ GNUPGHOME错误

问题描述 投票:2回答:1

我在本地构建了rabbitMQ alpine docker图像,看到完整的Dockerfile

RUN export GNUPGHOME="$(mktemp -d)" \
    && gpg --keyserver ha.pool.sks-keyservers.net --recv-keys B42F6819007F00F88E364FD4036A9C25BF357DD4 \
    && gpg --batch --verify /usr/local/bin/gosu.asc /usr/local/bin/gosu \
    && rm -r "$GNUPGHOME" /usr/local/bin/gosu.asc 

随机我在下面得到错误(主要是在jenkins CI系统中)

rm -rf /tmp/tmp.bBBnjn rabbitmq-server.tar.xz.asc
rm: can't remove '/tmp/tmp.bBBnjn/S.gpg-agent.extra': No such file or directory

要么

rm -rf /tmp/tmp.GlfNBI rabbitmq-server.tar.xz.asc
rm: can't remove '/tmp/tmp.GlfNBI/S.gpg-agent.ssh': No such file or directory

看起来gpg代理只是在rm期间停止了。 (存在删除时,但删除时消失)

我使用的是Ubuntu 16.04 LTS版本

$ docker info
Containers: 2
 Running: 2
 Paused: 0
 Stopped: 0
Images: 193
Server Version: 1.12.6
Storage Driver: overlay
 Backing Filesystem: extfs
Logging Driver: json-file
Cgroup Driver: cgroupfs
..

对此有何解决方案?

docker dockerfile gnupg
1个回答
4
投票

将它改为下面,它应该一直工作

export GNUPGHOME="$(mktemp -d)"; \
        gpg --keyserver pgp.mit.edu --recv-keys "$GPG_KEY" || \
        gpg --keyserver keyserver.pgp.com --recv-keys "$GPG_KEY" || \
        gpg --keyserver ha.pool.sks-keyservers.net --recv-keys "$GPG_KEY" ; \
    gpg --batch --verify rabbitmq-server.tar.xz.asc rabbitmq-server.tar.xz; \
    pkill -9 gpg-agent; \
    pkill -9 dirmngr; \
    rm -rf "$GNUPGHOME";

gpg-agentdirmngr在后台运行,有时需要时间来存在。我相信rm会选择这些进程的文件,当它试图删除守护进程和文件区域时已经消失了。所以添加这两个pkill应该删除错误

HTOP

© www.soinside.com 2019 - 2024. All rights reserved.