使用Docker部署laravel项目时得到mysql错误
我想用像远程服务器一样的testing来testing我的laravel项目。 所以我尝试使用Docker(从来不知道)。 我安装了docker,并按照项目中的说明使用docker进行部署。 build立
将.env.example文件复制到.env,docker-compose.yml.example到docker-compose.yml
修改.envconfiguration文件(可选)。 如果修改.env文件中的mysql,mongo,redisconfiguration,请记得修改docker-compose.yml文件中的configuration。 安装或运行Docker
docker-compose up -d
// 停止
docker-compose stop
chmodcaching文件夹
chmod -R 777 storage chmod -R 777 bootstrap/cache
部署
sh deploy.sh
运行sh doploy.sh
我得到这个错误:
[Illuminate\Database\QueryException] SQLSTATE[HY000] [2002] No such file or directory (SQL: select * from information_schema.tables where table_schema = awesome_teacher and table_name = migrations) [Doctrine\DBAL\Driver\PDOException] SQLSTATE[HY000] [2002] No such file or directory [PDOException] SQLSTATE[HY000] [2002] No such file or directory [Illuminate\Database\QueryException] SQLSTATE[HY000] [2002] No such file or directory (SQL: select * from information_schema.tables w here table_schema = homestead_test and table_name = migrations) [Doctrine\DBAL\Driver\PDOException] SQLSTATE[HY000] [2002] No such file or directory [PDOException] SQLSTATE[HY000] [2002] No such file or directory
文件“docker-compose.yml”:
version: '2' ### Change the `teacher` with your own teacher name ### services: application: container_name: teacher_application image: debian volumes: - ./:/var/www/laravel workspace: container_name: teacher_workspace restart: always image: my_company/laravel-workspace volumes_from: - application tty: true php-fpm: container_name: teacher_php-fpm restart: always image: my_company/laravel-php-fpm volumes_from: - application expose: - "9000" links: - workspace nginx: container_name: teacher_nginx restart: always image: my_company/laravel-nginx volumes_from: - data - logs - application ports: - "8000:80" links: - php-fpm data: container_name: teacher_data image: debian volumes: - .docker/mysql:/var/lib/mysql - .docker/data:/data data_test: container_name: teacher_data_test image: debian volumes: - .docker/mysql_test:/var/lib/mysql - .docker/data_test:/data logs: container_name: teacher_logs image: debian volumes: - .docker/logs/nginx:/var/log/nginx - .docker/logs/mongodb:/var/log/mongodb mysql: container_name: teacher_mysql restart: always image: mysql volumes_from: - data - logs expose: - "3306" environment: MYSQL_DATABASE: awesome_teacher MYSQL_USER: root MYSQL_PASSWORD: blablabla MYSQL_ROOT_PASSWORD: blablabla mysql_test: container_name: teacher_mysql_test restart: always image: mysql volumes_from: - data_test expose: - "3306" environment: MYSQL_DATABASE: homestead_test MYSQL_USER: homestead_test MYSQL_PASSWORD: secret MYSQL_ROOT_PASSWORD: root
文件“.env”:
APP_ENV=local APP_KEY=base64:hl4qkfCdHiJrCG4sGfYfMU8faq3WywMHkH+mr/FiDu9PM= APP_DEBUG=true APP_LOG_LEVEL=debug APP_URL=awesome-teacher.local APP_DOMAIN='awesome-teacher.local' DB_CONNECTION=mysql DB_HOST=localhost DB_PORT=3306 DB_DATABASE=awesome_teacher DB_USERNAME=root DB_PASSWORD=blablabla DB_TEST_CONNECTION=mysql_test DB_TEST_HOST=localhost DB_TEST_PORT=3308 DB_TEST_DATABASE=homestead_test DB_TEST_USERNAME=homestead_test DB_TEST_PASSWORD=secret BROADCAST_DRIVER=log CACHE_DRIVER=file SESSION_DRIVER=file QUEUE_DRIVER=sync PUSHER_APP_ID= PUSHER_KEY= PUSHER_SECRET=
你有一个简单的laravel应用程序相当复杂的设置。 问题是你的laravel应用程序试图连接到它自己的容器中的MySQL
服务器实例。
将DB_HOST=localhost
更改为DB_HOST=mysql
,而不是连接到mysql
容器。
- Docker-machine Google(GCE)驱动程序无法正常工作,无法创build实例
- 如何保持一个无限循环运行,以便在Docker中closures容器
- docker群连接令牌是私人的吗?
- 面对静态内容的caching问题,无法连接mongodocker容器与mongo客户端(mongobooster)
- docker-compose start“错误:没有容器启动”
- Docker – 来自守护进程的错误响应:客户端比服务器更新
- Kubernetes部署:控制容器的Docker运行命令
- “nginx-proxy”docker image socket volume not mounted
- 如何编写Docker Cloud的堆栈文件?