在 Elasticbeanstalk for Scala Apps 中为 Docker 多容器环境部署和托管工件的最佳实践是啥?
Posted
技术标签:
【中文标题】在 Elasticbeanstalk for Scala Apps 中为 Docker 多容器环境部署和托管工件的最佳实践是啥?【英文标题】:What are the best practices to deploy and host artifacts for a Docker Multicontainer environment in Elasticbeanstalk for Scala Apps?在 Elasticbeanstalk for Scala Apps 中为 Docker 多容器环境部署和托管工件的最佳实践是什么? 【发布时间】:2015-10-05 04:49:31 【问题描述】:我有几个 Scala 应用程序,我想将它们部署在 Amazon 的 Elastic Beanstalk 上的 Docker 多容器环境中。
整个过程似乎比我预期的要复杂一些。 所以我真的很期待听到一些关于最佳做法和其他方法的反馈,以改进我的整个流程并能够“自动化”某些步骤(如果可能的话)。
这是我目前的流程:
-
为了生成项目的工件,我使用了sbt-docker 插件。这
插件在下生成项目工件(jar 和 Dockerfile)
[app-route]/target/docker。
我将这些工件(jar 和 Dockerfile)上传到 git
存储库(目前“手动”执行此操作)。
作为Amazon's Elastic Beanstalk requires for Docker
multi-containers,我需要一个在线存储库来“托管”
图片:可能是Docker-Hub 或Quay.io。要么要求我
拥有一个 git 存储库,它可以在其中找到要放置的工件
能够生成项目的图像。
在 Elastic Beanstalk 中创建了多容器环境后,
我继续上传Dockerrun.aws.json 文件,详见
亚马逊的文档以及
.ebextensions/elb-listeners.config 文件,其中包含
端口(因为我正在运行多个应用程序)
魔法!亚马逊生成我的环境。相同的网址,不同的端口
对于我所有的应用程序(如 步骤中的配置文件中指定的那样
4.
我很想找到一种方法来自动化第 2 步。 因为这需要我为每个应用程序提供一个额外的存储库。我将我的应用程序托管在一个 git 存储库中,并且我在每个存储库中都有一个“额外”存储库,我在其中托管 步骤 1 中生成的工件,以便能够执行 步骤 3 .
【问题讨论】:
【参考方案1】:如果您愿意为第 1 步使用不同的 SBT 插件,那么您可以自动执行第 2 步。
虽然 quay.io 支持从 GitHub 构建您的图像,但它们不需要它。 (您可以将本地 Docker 映像直接发布到您的 quay.io 存储库。)
-
在 project/plugins.sbt 中使用sbt-native-packager plugin。
在 build.sbt 中设置插件设置,例如:
dockerRespository := Some("quay.io/myaccount")
您的步骤 1 变为:sbt docker:stage
后跟:sbt docker:publishLocal
使用docker images
检查您的图像名称和标签。新图像的名称应类似于 quay.io/myaccount/app
在发布到 quay.io 之前,您必须docker login quay.io
。阅读their tutorial。
您的步骤 2 变为 sbt docker:publish
。现在,您的 quay.io 帐户应该包含与本地 Docker 守护程序相同的 IMAGE ID。
在 AWS 端继续执行步骤 3+...
【讨论】:
【参考方案2】:我对 Scala 不是很熟悉,但是我相信工件可以由 Jenkins/CircleCI 在您的容器内生成,该容器基于 Jenkins/CircleCI 构建,然后在您的 Dockerrun.aws.json 中引用适当的图像标签。
希望对您有所帮助。
【讨论】:
以上是关于在 Elasticbeanstalk for Scala Apps 中为 Docker 多容器环境部署和托管工件的最佳实践是啥?的主要内容,如果未能解决你的问题,请参考以下文章
连接 Facebook Graph API 时 ElasticBeanstalk for PHP 上的 504 网关超时
SEE MIPS RUN-第四章 Cache for MIPS SC
SC-DepthV3:Robust Self-supervised Monocular Depth Estimation for Dynamic Scenes——论文笔记