【发布时间】:2017-04-11 09:15:00
【问题描述】:
我有一个 Java 应用程序作为我们整个项目的后端,我们所有的软件都是完全开源的。问题如下:
我们使用来自 Google 的多个 API 密钥、SendGrid 到 MySQL 数据库身份验证密钥。所有这些都存储在application.properties 文件中。我们在 GitHub 上的代码同上,只是缺少这些文件。目前的解决方法是它们仅在我们部署到 Heroku 的 Heroku 遥控器上可用。每当我们希望部署更改时,我们切换到 heroku 分支,从 master 拉取更改并重新设置此分支,最后推送它。
我们很快就会转移到 cycle.io 运行容器化应用程序,所以基本上我们正在转移到 Docker。我们将部署 dockerized 应用程序和一个 MySQL Docker 实例并相互通信。引用循环
环境允许您在您的团队之间进行组织和交流 容器。当您从环境中单击容器上的“开始”时, 网络自动配置,并通知任何其他 容器在其存在的环境中。
Cycle.io 允许我们自动链接来自Docker Hub 的图像或拥有一个带有Dockerfile 的git 存储库。它从那里拾取它,然后自动部署它。
我的问题是,如何将这些私有文件集成到我的代码构建测试部署管道中?。天真地,我在想一些在构建之前“注入”这些文件的方法。我不知道该怎么做。我目前对 docker 部署的想法是
- 在我的本地系统上构建一个可以运行的 docker 映像
- 将其推送到 Docker Hub 到一个私有存储库并允许与 docker hub 集成的 cycle.io 从那里获取它
- (我也想集成 Tavis/CI,不知道怎么做)
是否有任何 SENSIBLE,或者由于缺少另一个词,PRO 这样做的方式?我们是一群寻求遵循最佳实践的学生,这个应用程序将扩大规模。我们已经为部署和域名通行证等支付了全额费用,但我们并没有任何专家指导。
【问题讨论】:
-
除非cycle.io 允许您为您的环境配置某种 秘密数据,否则您无法正确执行此操作。鉴于此,很容易利用更大的秘密。它可能是解密本地文件所需的加密密钥、访问数据库所需的密码等。如果没有来自 cycle.io 的某种支持,无法安全地执行此操作,因此他们应该提供一些东西。如果您只拥有私有 docker hub 凭据,那么您可以使用您的私有 docker 存储库,但依赖它们的安全性我不会很舒服。