如何将文件添加到 EC2 实例下的容器中?
Posted
技术标签:
【中文标题】如何将文件添加到 EC2 实例下的容器中?【英文标题】:How to add a file to container under EC2 instance? 【发布时间】:2021-12-17 23:54:15 【问题描述】:我有一个需要在 AWS 中部署的应用程序。
应用程序具有默认属性,应使用 overrides.properties 文件为每个环境(qa/prd 等)覆盖这些属性。
应用程序的源代码组成docker镜像并发送到GPR。
我有一个 CDK 存储库,它从 GPR 获取 docker 映像,将其存储在 ECR 中并使用 AutoScaling Group 创建一个 Fargate 服务。
在这里,我必须以某种方式将默认属性覆盖为不同环境的特定属性。
CDK 中是否有一个选项可以在运行 docker 容器之前将文件 (overrides.properties) 添加到 docker 映像或将其传递给 ec2 实例?
【问题讨论】:
您指的是哪些属性?容器环境变量?如果它只是一个配置文件,您可以更改容器代码以使用环境变量并将它们传递给容器 - 请参阅 ECS CDK 文档了解如何执行此操作。 @gshpychka 是的,它是应用程序的配置文件。我试过使用环境变量,但它不起作用,因为我必须使用的框架不使用环境变量,我对此无能为力。虽然它使用系统属性,但我没有找到使用 CDK 设置系统属性的方法。 您可以在启动时使用容器中的自定义脚本从环境变量生成配置文件。 @gshpychka 好主意,谢谢!试过了,它奏效了。当然,这种方法的缺点是我将属性设置为环境变量,这似乎有点多余,但是嘿,它有效:) 【参考方案1】:如果有人发现自己处于类似情况 - 发布 @gshpychka 提出的解决方法
可以将所需的属性设置为环境变量,并将用于将环境变量存储到特定文件的脚本添加到映像的 Dockerfile。
示例脚本:
env | while IFS= read -r line; do
echo "$line" >> /your/file/here
done
【讨论】:
以上是关于如何将文件添加到 EC2 实例下的容器中?的主要内容,如果未能解决你的问题,请参考以下文章
如何使用 terraform 将负载均衡器添加到 ec2 实例
如何使用 CloudFormation 将安全组添加到现有 EC2 实例