gpt4 book ai didi

amazon-web-services - 每个环境单独的 Dockerrun.aws.json

转载 作者:行者123 更新时间:2023-11-29 02:53:25 36 4
gpt4 key购买 nike

对于一个项目,我在 AWS Elastic Beanstalk 中有两个环境:验收和生产。验收使用简单的 t2.nano 实例,而生产使用 t2.medium。

t2.nano 有 500 MB 内存,而 t2.medium 有 4 GB。因此,我希望根据要部署到的环境在我的 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 deploy 失败并显示 No ecs task definition (or empty definition file) found in environment

我能做什么:

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

但如果可以选择坚持使用纯 EB CLI 而不是使用自定义脚本,那将是我的偏好。

拥有两个 Dockerrun 的主要目标是为每个容器分配不同的内存,并为每个环境加载自定义 PHP-FPM 配置(通过将包含配置文件的环境特定目录安装到 /usr/local/etc/php-fpm.d),它们对子进程有不同的设置。

最佳答案

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

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

OP 中的我能做什么 - 使用自定义脚本进行部署正是我们所做的。

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

  1. 替换容器定义中的图像标签。
  2. .ebextensions/Dockerrun.aws.worker.json => Dockerrun.aws.json 复制到一个单独的文件夹。
  3. 该单独的文件夹(总共 4 个文件)已压缩。
  4. 最终使用 eb deploy 部署。

关于amazon-web-services - 每个环境单独的 Dockerrun.aws.json,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51641733/

36 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com