gpt4 book ai didi

docker - 传入变量或回答 Dockerfile

转载 作者:行者123 更新时间:2023-12-05 00:25:19 26 4
gpt4 key购买 nike

这似乎是一个经常被问到的问题。我想再问一次,看看是否有人提出了答案,或者看看是否有人可以提出其他建议。

我们有很多计算机并运行服务,更新它们通常是一件令人头疼的事情。 Docker 来了。我们想自动化这个过程。 Docker 将为此工作得很好,但我想自动化构建,以便我们团队中的任何人都可以做到这一点。

该过程的一部分涉及克隆一些 git 存储库。

我可以做的一件事是使用 shell 脚本在本地克隆 repos,然后将它们复制到图像中,但是由于有一个 dockerfile 可以自动执行某些操作,因此将方向放在那里似乎很自然。

除了提供 git 凭据外,这不是问题。

目前我正在构建过程中复制我的 id_rsa。不过是复制它,从 repo 中提取,然后删除我的凭据。除了 Dockerfile 不接受用户输入外,这应该可以正常工作。

当我在 dockerfile 中添加我的 ssh key 时,它想要我的 key 密码……docker 只是胡说八道,因为它无法接受用户输入。

我如何解决这个问题并仍然使流程自动化?

这是来自 dockerfile 的示例。

FROM ubuntu:14.04
MAINTAINER Senica Gonzalez <senica@gmail.com>
RUN apt-get -y update
RUN apt-get -y upgrade
RUN apt-get -y install git-core
RUN apt-get -y install vagrant
RUN mkdir /home/.ssh
COPY id_rsa /home/.ssh/id_rsa
RUN eval "$(ssh-agent -s)"; ssh-add /home/.ssh/id_rsa; ssh-add -l

最佳答案

您不想添加和删除您的 key 。每个命令都会创建一个图层,该图层存在于图像历史记录中,即使您从最终结果中删除 id,它也会出现在历史记录中(将其视为将您的 id 提交到 github 然后删除它并推送删除) .

最简单的方案是使用新的专用(和共享) key ,该 key 对存储库具有读访问权限。这个键不应该有关键短语,所以不需要交互式输入。

如果您使用 github,请查看 documentation on Deploy Keys (即使你不这样做,它也可能是鼓舞人心的)。

话虽如此,从 Dockerfile 中克隆不是我的选择。我会为每个项目使用 Dockerfile 或类似的东西,以便克隆发生在构建之前并独立于构建。

关于docker - 传入变量或回答 Dockerfile,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24792505/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com