用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 } ] } 

这是http://docs.aws.amazon.com/elasticbeanstalk/latest/dg/create_deploy_docker_v2config.html#create_deploy_docker_v2config_dockerrun中的一个示例

您可以用类似的方法命名容器

即使您在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。

我会在.ebextensionsconfiguration文件中做这样的事情

 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 

希望它给你任何想法如何解决你的问题。 🙂