web-dev-qa-db-fra.com

quelle est la différence entre les commandes et les commandes de conteneur dans la conversation élastique

Dans aws élastiquebean parler.

Lorsque nous configurons des extensions dans .ebextensions

je me demande quelle est la différence entre commands et container_commands

Ma commande est comme ça

container_commands:
  04_insert_app:
    command: "cat .ebextensions/insertapp_job.txt > /etc/cron.d/insertapp_job && chmod 644 /etc/cron.d/insertapp_job"
    leader_only: true

container_commands est un travail.

commandes: a une erreur .ebextensions/insertapp_job.txt pas trouvé

28
t10508hn

La principale différence entre ces deux éléments réside dans le fait qu'ils sont exécutés dans le processus de déploiement Elastic Beanstalk.

Commandes

Ces commandes sont exécutées au début du processus de déploiement, avant la configuration du serveur Web et avant le décompactage du code de votre application:

Les commandes sont traitées par ordre alphabétique par nom et s'exécutent avant la configuration de l'application et du serveur Web et l'extraction du fichier de version de l'application . 1

Par défaut, les commandes s'exécutent dans le dossier de départ de l'utilisateur root. Ceci et divers autres éléments du comportement d'EB peuvent être modifiés via des options (répertoire de travail, poursuite de l'erreur, variables d'environnement à passer aux commandes, etc.) qui peuvent être transmises avec la commande.

Commandes de conteneur

Ces commandes sont exécutées plus tard dans le processus de déploiement, après que le serveur Web a été configuré et après que votre code d'application a été décompressé dans le dossier intermédiaire, mais avant que votre application ait été "déployée" (en déplaçant le dossier intermédiaire vers sa version finale). emplacement):

Les commandes de conteneur s'exécutent après la configuration de l'application et du serveur Web et l'extraction de l'archive de version d'application, mais avant le déploiement de la version d'application. Les commandes sans conteneur et autres opérations de personnalisation sont effectuées avant l'extraction du code source de l'application . 2

Par défaut, ces commandes s'exécutent dans le dossier intermédiaire, de sorte que toutes les modifications que vous apportez au dossier actuel persistent une fois que votre application est déployée (le chemin changera cependant, alors faites attention aux liens relatifs!).

Les commandes de conteneur prennent en charge toutes les mêmes options que les commandes (sans conteneur), mais elles prennent également en charge une option "leader_only":

Vous pouvez utiliser leader_only pour exécuter la commande uniquement sur une seule instance, ou configurer un test pour exécuter la commande uniquement lorsqu'une commande de test a la valeur true. Les commandes de conteneur leader uniquement sont exécutées uniquement lors de la création et des déploiements d'environnement, tandis que d'autres commandes et opérations de personnalisation du serveur sont effectuées chaque fois qu'une instance est provisionnée ou mise à jour . 2

44
Tiro

En plus de la réponse @Tiro et @ t10508hn, je veux juste préciser que commands et container_commands sont exécutés sur la machine hôte.

Pour exécuter des commandes dans le conteneur Docker, utilisez le Dockerfile.

Ce fut un point de confusion lorsque j'ai dû exécuter quelques commandes avec leader_only et a supposé que container_commands ont été exécutés dans le conteneur.

5
Gautam

J'ai trouvé ma réponse ici aws offcial docs

commands: exécute les commandes sur l'instance EC2

container_commands: exécuter des commandes pour votre conteneur

3
t10508hn