一尘不染

如何将凭据烘焙到git的docker映像中?

linux

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

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

到目前为止,我所做的是:

  • 我选择Alpine作为我的服务图像的基础图像。
  • 因为我只需要git的凭据,所以我认为将git凭据帮助器放入映像中可能会解决我的问题。我可以在构建期间将凭据保存到帮助程序,并在运行时使用它们。
  • libsecret根据本文的介绍),我用了一段时间的Google搜索并决定将其用作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-syntax`([从这里开始](https://bugs.launchpad.net/ubuntu/+source/libsecret/+bug/1420914)),但是这次没有运气。错误继续。

最后,我想知道:

  1. 我是否在正确的方向上(使用git凭据帮助程序)实现自己的目标?
  2. 如果是这样,我该如何解决X11问题?
  3. 还有其他快速干净的方法可以通过版本控制在Docker中备份数据吗?

阅读 263

收藏
2020-06-07

共1个答案

一尘不染

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

你需要:

2020-06-07