【发布时间】:2016-07-07 01:12:33
【问题描述】:
这可能是服务器故障,但由于我试图通过 API 或以其他方式进行编程,我将假设问题是针对 StackOverflow 的,直到我被告知其他情况。
我正在尝试在我正在开发的应用程序中用 ECS 替换 Deis。应用程序本身目前能够在 Deis 上启动新应用程序(运行 Web 应用程序的 docker 容器),方法是使用部署密钥从我们的私有 git 存储库中检查源代码,然后将所述代码推送到 Deis 端点(然后处理创建和启动 docker 容器等等)。
不过,Deis 一直很不稳定,所以我正在探索替换它。
ECS 似乎很合适,通过使用Buildstep Container,我已经使用 docker 在命令行中成功地从我的私有存储库中运行了类似于 heroku 的代码部署。
为此,我必须将我的 ssh 密钥目录映射到容器中,作为运行命令的一部分:
docker run -d -v ~/.ssh:/root/.ssh -p 3000:3000 -e PORT=3000 -e GIT_REPO=private-repo-url.git tutum/buildstep /start web
除了两件事之外,这大部分都很好。首先是我不知道调用任务创建 API 时执行此操作的最佳方法。据我了解,可以使用卷和挂载点在 ECS 上注册任务,但卷需要是运行任务的 ECS 集群主机上的卷(?我可以对此使用确认),这不会在任务注册时已知。我能找到的唯一示例使用了本地文件路径。
所以,第一个问题:如何将我的部署密钥注入容器,或可靠地映射容器可以在启动时附加的“密钥”目录
这方面的另一部分不太重要,但理想情况下,一旦 git repo pull 完成,密钥就不会保留在每个容器上。我认为最干净的方法将取决于我如何完成第一个问题,但第二个问题是我如何清理我的密钥,以便在部署完成后它们不会留在容器上
【问题讨论】:
-
您今天在您的部署环境中如何解决同样的问题,您正在使用卷共享 .ssh 密钥,开箱即用的 docker 不会进行任何清理。
-
我今天没有解决它,我有一个完全不同的架构,我正在迁移。
标签: git docker amazon-ecs