Docker-Compose Up Works但Eb Local Run不行

附件是我的docker-compose文件。 它是一个非常简单的项目,有一个数据库和phpmyadmin来访问它。

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 

如果我运行这个工作正常。 我为Amazon Elastic Beanstalk的Docker运行创build了Equivlent,并启动,但由于某种原因,它找不到在.data文件夹中保留我的持久数据库数据的卷。

我试图改变.data只是数据没有运气。

另外,我尝试执行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: ) 

我不知道如何解决这个错误或为什么发生。 有任何想法吗?

哎呀忘了添加我的亚马逊文件:)。

 { "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 } ] } ] } 

不要使用相对path。

在部署之前使用eb local run进行testing,这将帮助您解决部署问题。 您的Dockerrun.aws.json文件将被转换为docker-compose.yml文件,并开始使用docker的本地副本。

您可以在path.elasticbeanstalk / docker -compose.yml的项目目录中find生成的docker -compose.yml 。 您会注意到您的卷缺lessdocker-composeconfiguration文件。

要解决此问题,请将您的卷更改为:

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

并在您的应用程序中创build目录,然后“eb本地运行”将正确转换它们。

eb部署现在应该正常工作。