我需要在EB应用上执行部署后脚本。我需要在多容器Docker环境中的Docker容器上执行命令。问题是Docker容器被分配了一个容器名称的随机哈希。
我已经搜索过,似乎无法找到有关如何在使用EB构建和设置过程中为Docker容器指定名称的任何信息。
有没有人对此有任何见解?我知道使用docker-compose这不是一个问题。
答案 0 :(得分:1)
即使您在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
最后一列包含我们所说的哈希。如果您正在创建部署后脚本,您仍然可以使用
获取容器IDdocker 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
希望它能让您了解如何解决问题。 : - )
答案 1 :(得分:0)
可以使用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
}
]
}
的示例
您可以用类似的方式命名容器