Rut*_*jer 5 amazon amazon-web-services elasticsearch docker amazon-elastic-beanstalk
对于一个项目,我在 AWS Elastic Beanstalk 中有两个环境:验收和生产。验收使用一个简单的 t2.nano 实例,而生产使用一个 t2.medium。
t2.nano 有 500 MB 的 RAM,而 t2.medium 有 4 GB。因此,我希望根据我要部署到的环境在我的 Dockerrun.aws.json 中分配不同的内存。这似乎是不可能的。
我试过的:
Dockerrun.aws.json.acceptance和Dockerrun.aws.json.production..ebextensions脚本中,调整/opt/elasticbeanstalk/hooks/appdeploy/pre/01unzip.sh脚本(使用sed),使其在解压源Dockerrun.aws.json.[env]文件Dockerrun.aws.json之后和循环遍历容器定义之前将正确的文件复制到。这部分有效:
Dockerrun.aws.json文件确实被替换为特定于环境的文件。Dockerrun.aws.json文件甚至被解压缩之前,定义就已经被处理了:我的源代码根目录中有一个后备文件,显然已经使用了那个文件。当我删除该文件时,eb deploy失败No ecs task definition (or empty definition file) found in environment我可以做什么:
eb deploy自定义部署脚本,该脚本首先将Dockerrun.aws.json文件替换为特定于环境的文件,然后运行eb deploy但是,如果可以选择坚持使用纯 EB CLI 而不是使用自定义脚本,那将是我的偏好。
编辑:拥有两个 Dockerrun 的主要目标是为每个容器分配不同的内存,并为每个环境加载自定义 PHP-FPM 配置(通过将特定于环境的目录与配置文件安装到/usr/local/etc/php-fpm.d),它们对子进程具有不同的设置.
有点晚了,但是任何想要将不同Dockerrun.aws.json文件部署到不同环境的人可能会发现这很有帮助。
正如OP已经发现的那样,定义需要在部署时定义。尝试使用 .ebextensions 在生命周期中为时已晚。
来自what I could doOP - 使用自定义脚本进行部署正是我们所做的。
具体来说,我们的 CI 运行命令包括:
.ebextensions/将和复制Dockerrun.aws.worker.json => Dockerrun.aws.json到单独的文件夹中。eb deploy。| 归档时间: |
|
| 查看次数: |
612 次 |
| 最近记录: |