0

我需要在EB应用程序上执行部署后脚本。我需要在多容器Docker环境中的Docker容器上执行命令。问题在于Docker容器被分配了一个随机散列作为容器名称。使用Dockerrun.aws.json和Elastic Beanstalk命名Docker容器

我已经四处搜索,似乎找不到任何有关如何在EB构建和设置过程中为Docker容器分配名称的信息。

有没有人有任何见解?我知道与码头合成这不是一个问题。

回答

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

这是http://docs.aws.amazon.com/elasticbeanstalk/latest/dg/create_deploy_docker_v2config.html#create_deploy_docker_v2config_dockerrun

为例,用户可以在类似的方式命名容器进行

+0

我最近尝试过,但是在运行'docker ps'时,容器的名字仍然是一个散列。 –

0

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

希望它让你对如何解决你的问题的想法。 :-)

相关问题