当前位置: 首页 > 知识库问答 >
问题:

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

崔博延
2023-03-14

这实际上是我上一个问题之后的问题。

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

要执行 git 拉取和推送,我的 Docker 映像需要托管我的凭据。实现这一目标的最简单而安全的方法是什么?

迄今为止我所做的工作:

    < li >我选择< code>Alpine作为我的服务图像的基础图像。 < li >因为我只需要git的凭证,所以我认为将git凭证助手放入映像中可以解决我的问题。我可以在构建时将凭证保存到助手中,并在运行时使用它们。 < li >根据这篇文章,我搜索了一会儿,决定使用< code>libsecret作为我的git凭证助手。 < li >我已经安装了< code>libsecret,并将我的git凭据帮助程序设置为< code > git-credential-lib secret

但是,到目前为止,我无法使git-凭据-libSecret正常工作。以下是我遇到的几个问题:

> < li>

首先,我测试了< code > git-credential-lib secret get 并得到以下错误:

< code >严重**:无法连接到Secret Service:没有machine-id无法生成消息总线:无法加载/var/lib/dbus/machine-id或/etc/machine-id:无法打开文件*/var/lib/dbus/machine-id*:没有这样的文件或目录

  • 我(可能吗?)通过安装dbus并运行dbus-uuidgen解决了它

然后我尝试再次运行 git-credential-libsecret 获取。这一次,它报告说:

严重**:无法连接到特勤局:无法在没有X11$DISPLAY的情况下自动启动D-Bus

    < li >我尝试安装< code>dbus-x11并运行< code > dbus-launch-sh-syntax (从这里),但这次没有成功。错误仍然存在。

最后,我想知道:

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

共有2个答案

段干河
2023-03-14

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

请注意,另一个选项是使用卷(请参阅我对前面问题的回答),在这种情况下,git只能安装在主机上。

但是在这里,您将在您的映像中直接使用git,这意味着,正如在这个docker文件中一样,您需要在docker文件中包含:

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

吴弘壮
2023-03-14

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

您需要:

    < li >将ssh客户端添加到您的docker映像中 < li >生成ssh密钥并将其复制到映像。不需要< code>ssh-agent部分 < li >向提供商注册密钥
 类似资料:
  • 问题内容: 我正在尝试使用docker托管个人笔记网络服务,并希望备份该服务生成的数据(我的笔记)。目前,我计划使用git提交,拉入和推送到存储库以达到我的目的。 要进行git pull and push,我的docker映像需要托管我的凭据。实现此目的最简单但最安全的方法是什么? 到目前为止,我所做的是: 我选择作为我的服务图像的基础图像。 因为我只需要git的凭据,所以我认为将git凭据帮助器

  • baked 为 Query 对象,它允许缓存对象的构造和字符串编译步骤。这就意味着 Query 构建不止一次使用的场景时,从最初构建到生成SQL字符串的查询构建过程中涉及的所有python函数调用都只会发生。 once 而不是每次建立和执行查询时。 这个系统的基本原理是大大减少发生的所有事情的python解释器开销。 在发出SQL之前 . “烘焙”系统的缓存 not 以任何方式减少SQL调用或缓存

  • 问题内容: 我需要提供一些具有相关数据集的Java代码。它是设备的模拟器,我希望能够将用于模拟记录的所有数据包含在一个.JAR文件中。在这种情况下,每个模拟记录都包含四个字段(主叫方,被叫方,呼叫开始,呼叫持续时间)。 最好的方法是什么?我已经走了将数据生成为Java语句的道路,但是IntelliJ似乎并不特别喜欢处理100,000行的Java源文件! 有更聪明的方法吗? 在C#/。NET世界中,

  • 烘焙系统是通过计算引擎场景中所有光源对物体的影响最终生成光照贴图并在场景中应用的过程,该系统的目的是减少实时光源的运算,从而提高场景运行效率。 创建 开启烘焙系统需要三个步骤: 在顶部菜单栏 Project(项目) 中单击该菜单按钮,在弹出菜单栏中单击Lightmap(光照贴图)按钮,弹出lightmap面板。 在烘焙前需要在编辑器中设置光源组件的Bakeable属性为true(注意:目前只支持一

  • JHipster现在使用maven jib插件。在此之前,运行在docker容器中的jenkins服务器能够用*创建docker映像。war文件,并通过使用“Jenkinsfile”的管道将其推送到我自己的docker注册表(对于gradle,但我现在切换到Maven),在作业完成后,另一个作业通过使用ssh在远程主机上执行shell脚本,将新构建的docker映像拉到我服务器上的新docker容

  • 所以我在docker hub有一个私有存储库,我正在尝试使用HTTP API手动下载图像(blob)。 现在有一些问题 我试过了https://hub.docker.com/support/doc/how-do-i-authenticate-with-the-v2-api这个脚本运行正常,我可以看到我的标签 但是docker HUB api中没有API可以从标签中获取blob列表然后下载它。 有一