Amazon web services 在AWS ECS中运行docker并传递env文件
我需要在AWS ECS中运行docker容器。我无法访问图像的源代码。这是一张私人图片,来自我上传到AWS ECR的私人回购协议。我创建了一个AWS ECS任务定义,用于在集群内的服务内运行容器。图像显示为正在启动和运行,但我无法通过浏览器点击它。我知道所有的网络设置都是正确的,因为我可以点击一个简单的Amazon web services 在AWS ECS中运行docker并传递env文件,amazon-web-services,docker,amazon-ecs,amazon-ecr,Amazon Web Services,Docker,Amazon Ecs,Amazon Ecr,我需要在AWS ECS中运行docker容器。我无法访问图像的源代码。这是一张私人图片,来自我上传到AWS ECR的私人回购协议。我创建了一个AWS ECS任务定义,用于在集群内的服务内运行容器。图像显示为正在启动和运行,但我无法通过浏览器点击它。我知道所有的网络设置都是正确的,因为我可以点击一个简单的helloworld应用程序,我也部署了该应用程序进行测试 我还需要先运行一个命令:docker run--env file:rake db:reset&&rake db:seed 根据此dock
helloworld
应用程序,我也部署了该应用程序进行测试
我还需要先运行一个命令:docker run--env file:rake db:reset&&rake db:seed
根据此docker映像的说明,它的run命令是:docker run-d--name--env file-p8080:80:
我可以在笔记本电脑上本地运行此映像,而不会出现任何问题,将其部署到AWS就是一个问题。
我的问题是如何向图像提供
环境变量\u文件
?我在哪里上传文件,如何传递?如何在映像运行之前运行初始化DB的命令?Amazon ECS不支持环境变量文件。您可以在任务定义内设置环境变量。例如:
"environment" : [
{ "name" : "string", "value" : "string" },
{ "name" : "string", "value" : "string" }
]
请阅读更多详情
更新:
AWS现在提供了一种方法-
自2020年11月起,ECS确实支持env文件(),但它们必须托管在S3上:
粘贴要点以供参考。根据集装箱定义:
“环境文件”:[
{
“值”:“arn:aws:s3:::s3\u bucket\u name/envfile\u object\u name.env”,
“类型”:“s3”
}
]
任务执行角色还需要以下权限:
{
“版本”:“2012-10-17”,
“声明”:[
{
“效果”:“允许”,
“行动”:[
“s3:GetObject”
],
“资源”:[
“arn:aws:s3:::s3_bucket_name/envfile_object_name.env”
]
},
{
“效果”:“允许”,
“行动”:[
“s3:GetBucketLocation”
],
“资源”:[
“arn:aws:s3:::s3_bucket_name”
]
}
]
}