我需要在EB应用程序上执行部署后脚本。我需要在多容器Docker环境中的Docker容器上执行命令。问题在于Docker容器被分配了一个随机散列作为容器名称。使用Dockerrun.aws.json和Elastic Beanstalk命名Docker容器
我已经四处搜索,似乎找不到任何有关如何在EB构建和设置过程中为Docker容器分配名称的信息。
有没有人有任何见解?我知道与码头合成这不是一个问题。
我需要在EB应用程序上执行部署后脚本。我需要在多容器Docker环境中的Docker容器上执行命令。问题在于Docker容器被分配了一个随机散列作为容器名称。使用Dockerrun.aws.json和Elastic Beanstalk命名Docker容器
我已经四处搜索,似乎找不到任何有关如何在EB构建和设置过程中为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
最后一列包含我们正在谈论的散列。如果你创建部署后脚本,你仍然可以得到与集装箱ID,让我们说,
docker ps -qf name=nginx
基于名称一部分返回容器ID。
我会做这样的事情在我的配置文件中.ebextensions
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 ps'时,容器的名字仍然是一个散列。 –