用Dockerrun.aws.json和Elastic Beanstalk命名一个Docker容器
我需要在EB应用程序上执行后期部署脚本。 我需要在多容器Docker环境中的Docker容器上执行命令。 问题是Docker容器被分配了一个随机的哈希值作为容器名称。
我已经四处search,似乎无法find任何信息,您可以在EB的构build和设置过程中,如何分配名称到Docker容器。
有没有人有任何见解呢? 我知道与docker,撰写这不是一个问题。
命名容器可以使用Docker.aws.json文件完成
"containerDefinitions": [ { "name": "php-app", "image": "php:fpm", "environment": [ { "name": "Container", "value": "PHP" } ], "essential": true, "memory": 128, "mountPoints": [ { "sourceVolume": "php-app", "containerPath": "/var/www/html", "readOnly": true } ] }
您可以用类似的方法命名容器
即使您在Dockerrun.aws.json
命名容器,beanstalk仍然会使用包含环境名称和其他类似内容的特定哈希来命名它们。 但是它也有上面的文件的名字。
8a18a679564e XXXXXXXXXX.dkr.ecr.eu-west-1.amazonaws.com/XXX:1.0.0-nginx "nginx -g 'daemon ..." 13 hours ago Up 13 hours 0.0.0.0:80->80/tcp ecs-awseb-test-rcbdaytu5h-6-nginx-e6a58fe786d9eae7dc01
最后一列包含我们正在谈论的散列。 如果您正在创build部署后脚本,您仍然可以获取容器标识,比方说,
docker ps -qf name=nginx
它根据名称部分返回容器ID。
我会在.ebextensions
configuration文件中做这样的事情
files: "/opt/elasticbeanstalk/hooks/appdeploy/post/99_do_something_on_container.sh": mode: "000755" owner: root group: root content: | #!/usr/bin/env bash MY_CONTAINER=$(docker ps -qf name=nginx) docker exec $MY_CONTAINER my command
希望它给你任何想法如何解决你的问题。 🙂
- 从集群获取正在运行的容器的列表
- Docker或Docker for AWS和AWS EC2上的部署
- Elastic Beanstalk单容器泊坞窗 – 使用awslogslogging驱动程序
- 将环境variables添加到ECS主机
- 使用rc.local启动依赖networking的服务
- 如何在Amazon中安装Amazon ECS容器代理? (ECS-INIT)
- 无法将日志从Amazon EC2 AMI中的Docker容器stream式传输到Cloudwatch日志
- 从ECR托pipe的Docker镜像创buildEC2最简单的方法是什么?
- 无法通过我的gmail电子邮件ID从弹性beanstalk环境发送电子邮件