1
votes

Erreur AWS Elastic Beanstalk Docker From ECR "Aucune image Docker spécifiée dans Dockerrun.aws.json"

J'essaie de déployer une image docker d'AWS ECR vers Elastic Beanstalk. J'ai configuré toutes les autorisations requises pour Elastic Beanstalk sur S3 et ECR. La communication entre ces services semble correcte, mais j'obtiens les erreurs suivantes lorsque j'essaye de lancer un environnement Elastic Beanstalk:

  1. No Docker image specified in either Dockerfile or Dockerrun.aws.json. Abort deployment.
  2. [Instance: i-01cf0bac1863e4eda] Command failed on instance. Return code: 1 Output: No Docker image specified in either Dockerfile or Dockerrun.aws.json. Abort deployment. Hook /opt/elasticbeanstalk/hooks/appdeploy/pre/03build.sh failed. For more detail, check /var/log/eb-activity.log using console or EB CLI.

Je télécharge un seul Dockerrun.aws.json qui pointe vers l'image sur ECR. Voici mon fichier Dockerrun.aws.json :

{
  "AWSEBDockerrunVersion": "1",
  "containerDefinitions": {
    "Name": "***.eu-central-1.amazonaws.com/***:latest",
    "Update": "true"
  },
  "Ports": [
    {
      "ContainerPort": "5000"
    }
  ],
  "Logging": "/var/log/nginx"
}

L'image docker existe sur ECR à l'emplacement spécifié dans le champ containerDefinitions Name .

Est-ce que j'ai râté quelque chose?


0 commentaires

3 Réponses :


2
votes

Il s'avère que containerDefinitions n'est pas applicable dans cette situation. Je ne sais pas où je l'ai trouvé (peut-être à partir d'un échantillon de dockerrun quelque part). Le nom réel de la propriété est comme ci-dessous:

{
  "AWSEBDockerrunVersion": "1",
  "Image": {
    "Name": "***.eu-central-1.amazonaws.com/***:latest",
    "Update": "true"
  },
  "Ports": [
    {
      "ContainerPort": "5000"
    }
  ],
  "Logging": "/var/log/nginx"
}


0 commentaires

0
votes

Rien ne te manque. Avait le même problème. C'était à cause du codage Dockerfile. Utilisez UTF-8 au lieu de UTF-8-BOM. Plus de détails ici: https://github.com/verygood-ops/eb_docker/blob/master/elasticbeanstalk/hooks/appdeploy/pre/03build.sh#L58

    FROM_IMAGE=`cat Dockerfile | grep -i ^FROM | head -n 1 | awk '{ print $2 }' | sed $'s/\r//'`

...


0 commentaires

0
votes

J'ai rencontré cette erreur en essayant d'utiliser le schéma AWSEBDockerrunVersion 1 sur un environnement exécutant "Docker fonctionnant sur 64 bits Amazon Linux 2 " comme plate-forme. Le message d'erreur ne révèle rien.

La création d'un nouvel environnement comme "Docker fonctionnant sur Amazon Linux 64 bits" et le redéploiement de mon Dockerrun.aws.json origine Dockerrun.aws.json résolu le problème pour moi. Vous pouvez également migrer votre Dockerrun.aws.json vers le schéma de la version 2.


0 commentaires