0

J'ai besoin d'exécuter un script de post-déploiement sur une application EB. J'ai besoin d'exécuter des commandes sur un conteneur Docker dans un environnement Docker multi-conteneur. Le problème est que les conteneurs Docker reçoivent un hachage aléatoire pour le nom du conteneur.Attribution d'un nom à un conteneur Docker avec Dockerrun.aws.json et Elastic Beanstalk

J'ai recherché autour et ne peux pas sembler trouver n'importe quelles informations sur comment vous pourriez assigner un nom à un conteneur de Docker pendant le processus de construction et d'installation avec EB.

Quelqu'un a-t-il un aperçu de cela? Je sais avec docker-composer ce n'est pas un problème.

Répondre

0

Nommer le conteneur peut être fait en utilisant le fichier Docker.aws.json voir le

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

Ceci est un exemple de http://docs.aws.amazon.com/elasticbeanstalk/latest/dg/create_deploy_docker_v2config.html#create_deploy_docker_v2config_dockerrun

Vous pouvez nommer le conteneur dans la même manière

+0

J'ai récemment essayé cela, mais lors de l'exécution de 'docker ps', le nom du conteneur est toujours un hachage. –

0

Même si vous nommez des conteneurs au sein de Dockerrun.aws.json, beanstalk les nomme toujours avec un nom d'environnement contenant un hachage spécifique et d'autres éléments de ce type. Mais il a aussi le nom du fichier ci-dessus.

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 

La toute dernière colonne contient un hash dont nous parlons. Si vous créez script de post-déploiement, vous pouvez toujours obtenir conteneur ID avec, disons,

docker ps -qf name=nginx 

qui retourne ID de conteneur basé sur une partie du nom.

je ferais quelque chose comme ça dans mon fichier de configuration dans .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 

Espoir vous donne une idée sur la façon de résoudre votre problème. :-)