El *_*eno 2 amazon-web-services amazon-ecs docker amazon-ecr
我需要在 AWS ECS 中运行一个 docker 容器。我无权访问图像的源代码。这是一个私有映像,来自我上传到 AWS ECR 的私有存储库。我创建了一个 AWS ECS 任务定义来在集群内的服务内运行容器。该图像显示为已启动并正在运行,但我无法通过浏览器点击它。我知道所有网络设置都是正确的,因为我可以点击一个hello world我也部署进行测试的简单应用程序。
我之前还需要运行一个命令:docker run --env-file <environment_variables_file> <image>:<tag> rake db:reset && rake db:seed.
根据这个 docker 镜像的说明,它的运行命令是:docker run -d --name <my_image_name> --env-file <environment_variables_file> -p 8080:80 <image>:<tag>.
我可以在我的笔记本电脑上本地运行这个映像,没有问题,将它部署到 AWS 就是这个问题。我的问题是如何提供environment_variables_file图像?我在哪里上传文件以及如何传递它?如何在映像运行之前运行命令来初始化数据库?
自 2020 年 11 月起,ECS 确实支持 env 文件(博客文章),但它们必须托管在 S3 上:
https://docs.aws.amazon.com/AmazonECS/latest/developerguide/taskdef-envfiles.html
贴上要点以供参考。在容器定义下:
"environmentFiles": [
{
"value": "arn:aws:s3:::s3_bucket_name/envfile_object_name.env",
"type": "s3"
}
]
Run Code Online (Sandbox Code Playgroud)
任务执行角色还需要以下权限:
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": [
"s3:GetObject"
],
"Resource": [
"arn:aws:s3:::s3_bucket_name/envfile_object_name.env"
]
},
{
"Effect": "Allow",
"Action": [
"s3:GetBucketLocation"
],
"Resource": [
"arn:aws:s3:::s3_bucket_name"
]
}
]
}
Run Code Online (Sandbox Code Playgroud)
小智 1
Amazon ECS 不支持环境变量文件。您可以在任务定义中设置环境变量。例如:
"environment" : [
{ "name" : "string", "value" : "string" },
{ "name" : "string", "value" : "string" }
]
Run Code Online (Sandbox Code Playgroud)
请阅读以下说明以了解更多详细信息。
更新:
AWS现在提供了一种方法 -
https://docs.aws.amazon.com/AmazonECS/latest/developerguide/taskdef-envfiles.html
| 归档时间: |
|
| 查看次数: |
2846 次 |
| 最近记录: |