在 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——论文笔记

bat常用符合和for语句等

蓝桥杯 基础练习 十六进制转八进制

求一个程序,要求是: 设计一个函数,以字符串为参数,返回该字符串中出现频率最高的字符。