首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >每个环境下单独的Dockerrun.aws.json

每个环境下单独的Dockerrun.aws.json
EN

Stack Overflow用户
提问于 2018-08-01 20:24:17
回答 1查看 875关注 0票数 5

对于一个项目,我有两个AWS弹性豆柄环境:验收和生产。验收使用一个简单的t2.nano实例,而生产使用t2.media。

t2.nano有500 MB的RAM,而t2.media有4GB的内存。因此,我希望Dockerrun.aws.json中有不同的内存分配,这取决于我要部署到的环境。这似乎不可能。

我试过的是:

  1. 设置两个Dockerrun.aws.json文件:Dockerrun.aws.json.acceptanceDockerrun.aws.json.production
  2. .ebextensions脚本中,调整/opt/elasticbeanstalk/hooks/appdeploy/pre/01unzip.sh脚本(使用sed),以便它在解压缩源之后,在遍历容器定义之前,将正确的Dockerrun.aws.json.[env]文件复制到Dockerrun.aws.json

这部分地起了作用:

  • Dockerrun.aws.json文件确实被特定于环境的文件所取代。
  • 然而,在整个源代码被解压缩之前,定义已经被处理了:我在我的源根中有一个回退的Dockerrun.aws.json文件,而且很明显,这个文件被使用了。当我删除该文件时,eb deployNo ecs task definition (or empty definition file) found in environment中失败

我能做的是:

  • 不要使用eb deploy,而是一个自定义部署脚本,它首先用特定于环境的Dockerrun.aws.json文件替换,然后运行eb deploy

但是,如果有一种选择是坚持使用纯EB CLI而不是使用自定义脚本,那将是我的首选。

编辑:拥有两个Dockerrun的主要目标是每个容器有不同的内存分配,并在每个环境中加载一个定制的PHP配置(通过将配置文件的环境特定的目录安装到/usr/local/etc/php-fpm.d),这些目录对子进程有不同的设置。

EN

回答 1

Stack Overflow用户

发布于 2019-10-04 00:06:19

有点晚了,但是任何想要将不同的Dockerrun.aws.json文件部署到不同环境的人都会发现这很有帮助。

正如OP已经发现的,定义需要在部署时定义。尝试使用.ebextensions在生命周期中为时已晚。

来自OP的what I could do --使用自定义脚本进行部署--正是我们所做的。

具体来说,我们有我们的CI运行命令:

  1. 替换容器定义中的图像标记。
  2. .ebextensions/Dockerrun.aws.worker.json => Dockerrun.aws.json复制到单独的文件夹中。
  3. 这个单独的文件夹(总共4个文件)将被压缩。
  4. 最后使用eb deploy进行部署。
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/51641733

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档