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é
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.
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.
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
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.
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