如何将凭证烘焙到码头图像中为git?

时间:2018-01-13 06:19:55

标签: linux git authentication docker alpine

这实际上是我之前one的问题。

我正在尝试使用docker来托管个人记笔记Web服务,并希望备份服务生成的数据(我的笔记)。 目前我计划使用git来提交,拉取和推送到我的目的的存储库。

要执行git pull and push,我的docker镜像需要托管我的凭据。实现这一目标的最简单但最安全的方法是什么?

到目前为止我做了什么:

  • 我选择Alpine作为我服务图片的基本图片。
  • 因为我只需要git的凭据,我认为在图像中放置一个git凭证帮助可以解决我的问题。我可以在构建期间将凭据保存到帮助程序,并在运行时使用它们。
  • 根据this article,我搜索了一段时间并决定使用libsecret作为我的git凭证助手。
  • 我已安装libsecret并将我的git凭证助手设为git-credential-libsecret

但是,到目前为止,我无法使git-credential-libsecret功能正常。以下是我遇到的一些问题:

  • 首先,我测试了git-credential-libsecret get并收到以下错误:

      

    CRITICAL **: could not connect to Secret Service: Cannot spawn a message bus without a machine-id: Unable to load /var/lib/dbus/machine-id or /etc/machine-id: Failed to open file */var/lib/dbus/machine-id*: No such file or directory

    • 我(可能?)通过安装dbus并运行dbus-uuidgen > /var/lib/dbus/machine-id
    • 解决了这个问题
  • 然后我尝试再次运行git-credential-libsecret get。这一次,它报告说:

      

    CRITICAL **: could not connect to Secret Service: Cannot autolaunch D-Bus without X11 $DISPLAY

    • 我尝试安装dbus-x11并运行dbus-launch --sh-syntaxfrom here),但这次没有运气。错误仍在继续。

总之,我想知道:

  1. 我是否朝着正确的方向(使用git凭证助手)实现我的目标?
  2. 如果是这样,我该如何解决X11问题?
  3. 是否还有其他快速,干净的方法可以在版本控制的docker中备份数据?

2 个答案:

答案 0 :(得分:2)

如果您的git提供程序支持使用公钥的ssh,我认为最简单的方法是切换到它们。您也无需复制密码。

你需要:

答案 1 :(得分:1)

这取决于您运行git-credential-libsecret的位置:您需要将其安装在映像/容器中,而不是安装在主机上。

请注意,另一个选项是使用卷(请参阅my answer to your previous question),在这种情况下,git只能安装在主机上。

但是在这里,你可以直接在你的图片中使用git,这意味着你需要在你的Dockerfile中拥有as in this Dockerfile

RUN apt-get update -y &&
apt-get install --no-install-recommends -y libsecret-1-0 git

https://github.com/electron-userland/electron-builder/blob/master/docker/base/Dockerfile