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 

希望它讓你對如何解決你的問題的想法。 :-)

相關問題