2

Attached ist meine Docker-komponieren-Datei. Es ist ein sehr einfaches Projekt mit einer Datenbank und phpmyadmin, um darauf zuzugreifen.Docker-Compose Up Works, aber Eb Local Run nicht

web: 
    build: ./docker_web/ 
    links: 
     - db 
    ports: 
     - "80:80" 
    volumes: 
     - "./docker_web/www/:/var/www/site" 
db: 
    image: mysql:latest 
    restart: always 
    volumes: 
     - "./.data/db:/var/lib/mysql" 
    environment: 
     MYSQL_ROOT_PASSWORD: ^^^^ 
     MYSQL_DATABASE: electionbattle 
     MYSQL_USER: admin 
     MYSQL_PASSWORD: ^^^^ 
phpmyadmin: 
    image: phpmyadmin/phpmyadmin 
    container_name: phpmyadmin 
    environment: 
    - PMA_ARBITRARY=1 
    restart: always 
    ports: 
    - 8081:80 
    volumes: 
    - /sessions 
    links: 
     - db 

Wenn ich das ausführen, funktioniert es gut. Ich habe das Äquivalent für Amazon Docker Run für Elastic Beanstalk erstellt und es wird gestartet, aber aus irgendeinem Grund kann es das Volume nicht finden, das meine persistenten Datenbankdaten im .data-Ordner enthält.

Ich habe versucht, zu ändern .data nur Daten kein Glück.

Auch bekomme ich einen seltsamen Fehler, wenn eb deploy

2016-09-24 19:56:10 UTC-0700 ERROR ECS task stopped due to: Essential container in task exited. (db: CannotCreateContainerError: API error (500): create ./.data/db/: "./.data/db/" includes invalid characters for a local volume name, only "[a-zA-Z0-9][a-zA-Z0-9_.-]" are allowed web: phpmyadmin:) 

ich keine Ahnung, wie zu tun haben, versuchen, diesen Fehler zu beheben oder warum sein Vorkommnis. Irgendwelche Ideen?

Oops vergessen, meine Amazon-Datei :) hinzuzufügen.

{ 
    "AWSEBDockerrunVersion": 2, 
    "volumes": [ 
    { 
     "name": "web", 
     "host": { 
     "sourcePath": "./docker_web/www/" 
     } 
    }, 
    { 
     "name": "db", 
     "host": { 
     "sourcePath": "./data/db/" 
     } 
    } 
    ], 
    "containerDefinitions": [ 
    { 
     "name": "web", 
     "image": "197984628663.dkr.ecr.us-west-1.amazonaws.com/electionbattleonline", 
     "memory": 200, 
     "essential": true, 
     "mountPoints": [ 
     { 
      "sourceVolume": "web", 
      "containerPath": "/var/www/site", 
      "readOnly": false 
     } 
     ], 
     "links": [ 
     "db" 
     ], 
     "portMappings": [ 
     { 
      "hostPort": 80, 
      "containerPort": 80 
     } 
     ] 
    }, 
    { 
     "name": "db", 
     "image": "mysql:latest", 
     "environment": [ 
     { 
      "name": "MYSQL_ROOT_PASSWORD", 
      "value": "^^^^" 
     }, 
     { 
      "name": "MYSQL_DATABASE", 
      "value": "electionbattleonline" 
     }, 
     { 
      "name": "MYSQL_USER", 
      "value": "admin" 
     }, 
     { 
      "name": "MYSQL_PASSWORD", 
      "value": "^^^^" 
     } 
     ], 
     "portMappings": [ 
     { 
     "hostPort": 3306, 
     "containerPort": 3306 
     } 
     ], 
     "mountPoints": [ 
     { 
      "sourceVolume": "db", 
      "containerPath": "/var/lib/mysql", 
      "readOnly": false 
     } 
     ], 
     "essential": true, 
     "memory": 200 
    }, 
    { 
     "name": "phpmyadmin", 
     "image": "phpmyadmin/phpmyadmin", 
     "environment": [ 
     { 
      "name": "PMA_ARBITRARY", 
      "value": "1" 
     } 
     ], 
     "essential": true, 
     "memory": 128, 
     "links": [ 
     "db" 
     ], 
     "portMappings": [ 
     { 
      "hostPort": 8081, 
      "containerPort": 80 
     } 
     ] 
    } 
    ] 
} 
+0

ist dies die ganze Datei oben? Verwenden Sie nicht 'version:" 2 "'? – Alkaline

+0

ja es ist die ganze Datei, Docker-komponieren und sein Zähler Teil der Dockerrun.aws.json –

+0

interessanterweise habe ich den DB-Container los und es gibt jetzt den gleichen Fehler für den Web-Container, wenn ich versuche, zu implementieren? wie seltsam ... mag es nicht, Volumen zu montieren? –

Antwort

2

Verwenden Sie keine relativen Pfade.

Verwenden Sie eb lokalen Lauf, um vor der Bereitstellung zu testen, es wird Ihnen helfen, Bereitstellungsprobleme zu lösen. Ihre Dockerr.aws.json Datei wird in eine docker-compose.yml Datei konvertiert und mit einer lokalen Kopie von Docker gestartet.

Sie können die generierte Docker-compose.yml in Ihrem Projektverzeichnis im Weg finden .elasticbeanstalk/Docker-compose.yml. Sie werden feststellen, dass Ihre Volumes in der Konfigurationsdatei docker-compose fehlen.

Um dies zu beheben, um Ihre Volumes ändern:

"volumes": [ 
    { 
    "name": "web", 
    "host": { 
     "sourcePath": "/var/app/current/docker_web/www/" 
    } 
    }, 
    { 
    "name": "db", 
    "host": { 
     "sourcePath": "/var/app/current/data/db/" 
    } 
    } 
], 

und die Verzeichnisse in Ihrer Anwendung erstellen, dann „eb lokalen run“ wird sie richtig konvertieren.

eb Bereitstellung sollte jetzt ordnungsgemäß funktionieren.

+0

Ich werde es versuchen, die ganze Zeit über festgefahren. –

Verwandte Themen