Comment définir des permissions de dossier pour un conteneur particulier sur Elastic Beanstalk

J’ai du mal à définir des permissions pour un dossier Web sur Elastic Beanstalk. Je lance plusieurs conteneurs en utilisant des images de docker personnalisées dans une instance: apache-php, mysql, memcached, etc. Pour le conteneur “apache-php”, je mappe un dossier avec mon application yii2 sur / var / www / html /.

Lorsque je crée manuellement un bundle et que je télécharge / déploie via la console Elastic Beanstalk, je suis sûr que les droits d’access au dossier sont corrects et que tout fonctionne correctement.

Maintenant, lorsque je déploie l’application en utilisant “eb deploy”, elle supprime toutes les permissions et je reçois une erreur de serveur et “le répertoire n’est pas accessible en écriture par le processus Web: / var / www / html / backend / web / assets” .

Je peux me connecter via ssh et définir les permissions nécessaires manuellement, mais je suis sûr que ce n’est pas pratique, car cela doit être fait chaque fois que je redéploie l’application.

Donc, mes questions sont la meilleure façon de définir automatiquement l’autorisation pour un dossier particulier dans un conteneur particulier sur Elastic Beanstalk?

Peut-être que je peux utiliser des extensions .eb, mais je n’ai pas trouvé comment exécuter “container_commands” pour un conteneur particulier.

AWS EB Deployment démarre votre application dans /var/app/ondeck

  1. Lors du déploiement de Beanstalk élastique, votre application est d’abord décompressée dans /var/app/ondeck/
    • Très probablement, votre dossier local en cours de déploiement ne dispose pas des permissions souhaitées.
  2. Si vous devez apporter des modifications à votre application ou au shell, lors du déploiement, .ebextensions/*.config est le bon endroit pour le faire.

Les commandes de conteneur doivent être exécutées sur ce chemin

Mais gardez à l’esprit que ces commandes s’exécuteront CHAQUE fois que vous déployez, qu’elles soient nécessaires ou non, sauf si vous utilisez une méthode pour tester la pré-configuration.

 container_commands: 08user_config: test: test ! -f /opt/elasticbeanstalk/.preconfig-complete command: | echo "jail-me" > /home/ec2-user/.userfile 09writable_dirs: command: | chmod -R 770 /var/app/ondeck/backend/web/assets chmod -R 770 /var/app/ondeck/[path] 99complete: command: | touch /opt/elasticbeanstalk/.preconfig-complete files: "/etc/profile.d/myalias.sh": mode: "000644" owner: root group: root content: | alias webroot='cd /var/www/html/backend/web; ls -al --color;' echo " ========== " echo " The whole point of Elastic Beanstalk is that you shouldn't need to SSH into the server. " echo " ========== " 

Oui, vous devriez utiliser des ebextensions.

Créez un dossier dans la racine source de votre application, appelé .ebextensions . Créez un fichier avec une extension .config dites 01-folder-permissions.config . Les fichiers sont traités dans l’ordre lexicographique de leur nom.

Le contenu du fichier peut être:

 container_commands: change_permissions: command: chmod 777 /var/www/some-folder 

Remplacez par le dossier et les permissions appropriés. Lisez les commandes de conteneur ici .