【问题标题】:Remove $GNUPGHOME error during Dockerfile build在 Dockerfile 构建期间删除 $GNUPGHOME 错误
【发布时间】:2018-02-02 00:15:18
【问题描述】:

我在本地搭建rabbitMQ alpine docker镜像,完整见Dockerfile

运行导出 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:无法删除'/tmp/tmp.bBBnjn/S.gpg-agent.extra':没有这样的文件或目录

rm -rf /tmp/tmp.GlfNBI rabbitmq-server.tar.xz.asc rm: 无法删除 '/tmp/tmp.GlfNBI/S.gpg-agent.ssh': 没有这样的文件或目录

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

我使用的是 Ubuntu 16.04 LTS 版本

$ 码头工人信息 容器:2 跑步:2 暂停:0 停止:0 图片:193 服务器版本:1.12.6 存储驱动程序:覆盖 支持文件系统:extfs 日志记录驱动程序:json 文件 Cgroup 驱动程序:cgroupfs ..

有什么解决办法吗?

【问题讨论】:

  • 有什么理由不使用官方rabbitmq图片?
  • 这主要是为了示例目的,我们也有一些小的修改(高山,多个密钥服务器以避免网络不稳定)
  • 如果您发布的只是示例,请发布实际的Dockerfile。否则调试会很困难
  • 完成并列出我的 docker build env。不常发生

标签: docker dockerfile gnupg


【解决方案1】:

将其更改为以下,它应该一直有效

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 应该可以消除错误

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-05-20
    • 2015-08-23
    相关资源
    最近更新 更多