0

Je suis en train de configurer CodePipeline en utilisant Elastic Beanstalk. Elastic Beanstalk doit déployer le fichier war dans son dossier webapps de Tomcat. Mais il déploie le fichier war dans le dossier webapps/ROOT. J'ai donc créé ci-dessous le script server-update.config dans .ebextensions dossier pour copier le fichier war dans le dossier webapps depuis webapps/ROOT /.Elastic Beanstalk: configuration .ebextensions exécutée et supprimée

.ebextensions/serveur update.config

container_commands: 
    copy_file: 
    command: sudo cp /var/lib/tomcat8/webapps/ROOT/test/* /var/lib/tomcat8/webapps/ 
    leader_only: true 

code ci-dessus est exécuté avec succès. Voici le journal.

[2016-04-18T14:06:30.939Z] INFO [1128] - [Application update code-pipelin[email protected]15/AppDeployStage0/EbExtensionPostBuild/Infra-EmbeddedPostBuild/postbuild_0_SampleEB/Command copy_file] : Starting activity... 
[2016-04-18T14:06:30.973Z] INFO [1128] - [Application update code-pipelin[email protected]15/AppDeployStage0/EbExtensionPostBuild/Infra-EmbeddedPostBuild/postbuild_0_SampleEB/Command copy_file] : Completed activity. 

Mais ElasticBeanstalk nettoie le dossier tomcat webapps après exécution du fichier .ebextensions (lors de l'exécution /opt/elasticbeanstalk/hooks/appdeploy/enact/02clean.sh interne)

+ EB_APP_DEPLOY_BASE_DIR=/var/lib/tomcat8/webapps 
    + rm -rf /var/lib/tomcat8/webapps/ROOT /var/lib/tomcat8/webapps/sampleapp.war 

Je ne sais pas comment pour configurer mon script pour qu'il s'exécute enfin. S'il vous plaît, aidez-moi avec les exigences ci-dessus.

Répondre

0

Si vous avez besoin d'Elastic Beanstalk pour exécuter un post après le déploiement, vous pouvez l'ajouter à AppDeployPostHook. J'ai détaillé comment le faire ici, https://stackoverflow.com/a/36603033/3167238 que vous pouvez adapter à vos besoins spécifiques.

1

Nous avons eu un problème similaire. Nous avions besoin de Celery à redémarrer après que Django ait été correctement installé. Nous avons résolu cela très simple comme ça à la fin.

files: 
"/opt/elasticbeanstalk/hooks/appdeploy/post/99_restart_service.sh": 
    mode: "000755" 
    owner: root 
    group: root 
    content: | 
     #!/usr/bin/env bash 
     service celeryd restart 

Ce met actuellement en après Elastic Beanstalk a travaillé sa magie sur le récipient.

+0

l'ordre est important: container_commands, packages, services, fichiers –