0

Dans Elastic Beanstalk, le code est téléchargé dans un compartiment S3, puis monté sur /var/app/current dans l'instance EC2, de sorte que tous les volumes doivent provenir de cet emplacement.Comment faire pour obtenir Dockerrun.aws.json set dynamique sourcePath basé sur l'environnement?

Alors mon Dockerrun.aws.json ressemble à ceci:

"volumes": [ 
    { 
     "host": { 
     "sourcePath": "/var/app/current/foo" // <<< problem lies here 
     }, 
     "name": "foo" 
    } 

En raison de cette chose /var/app/current, faire $ eb local run échoue parce que le chemin source sur ma machine locale est ~/bar/foo au lieu de /var/app/current/foo lorsqu'il est déployé. L'erreur est donnée ci-dessous:

Mounts denied: 
The path /var/app/current 
is not shared from OS X and is not known to Docker. 
You can configure shared paths from Docker -> Preferences... -> File Sharing. 
See https://docs.docker.com/docker-for-mac/osxfs/#namespaces for more info. 

Étant donné que je veux avoir mes déploiements eb fonctionnent localement et à distance avec le même fichier de configuration, comment dois-je résoudre ce problème?

Stack:

  • AWS Elastic Beanstalk multi-conteneurs Docker
  • MacOS, Docker pour Mac

Répondre

1

Par défaut Docker pour Mac partagé ci-dessous les chemins

  • /Utilisateurs
  • /Volumes
  • /tmp
  • /privé

Shared Volumes

Donc, si votre chemin commence par l'un de ces et vous pouvez garder les deux chemins sur AWS & locale, il serait alors travailler. Sinon, vous devez partager le /var sur vos paramètres Docker pour Mac

+0

Cela placerait le code source de l'application sur mon ordinateur local dans un dossier appelé/var/app/current, où je devrais tout faire pour que je fasse quoi que ce soit. J'ai créé un lien symbolique à la place. Toujours à la recherche d'une réponse plus complète que cette solution de contournement. –