php - 使用 laradock 迁移 Laravel 数据库失败

标签 php laravel docker laradock

我收到以下错误

[Illuminate\Database\QueryException]                                                                                                                 
  SQLSTATE[HY000] [2002] Connection refused (SQL: select * from information_schema.tables where table_schema = testdb and table_name = migrations)

当我运行时-
php artisan migrate

我在 laradock 工作区上运行这个命令。我使用以下命令进入工作区。
docker-compose exec workspace bash

我正在使用 laravel 5.5。我以下列方式在我的项目文件夹中有 laradock。
 +testproject
              -Laradock

我的项目 .env (testproject/.env) 文件包含以下 mysql 设置。
DB_CONNECTION=mysql
DB_HOST=mysql
DB_PORT=33060
DB_DATABASE=testdb
DB_USERNAME=root
DB_PASSWORD=root

我的 laradock .env(testproject/laradock/.env) 文件包含以下 mysql 设置。
MYSQL_VERSION=8.0
MYSQL_DATABASE=testdb
MYSQL_USER=default
MYSQL_PASSWORD=secret
MYSQL_PORT=33060
MYSQL_ROOT_PASSWORD=root
MYSQL_ENTRYPOINT_INITDB=./mysql/docker-entrypoint-initdb.d

我的 docker-compose.yml 包含 Mysql Container 的以下设置
mysql:
      build:
        context: ./mysql
        args:
          - MYSQL_VERSION=${MYSQL_VERSION}
      environment:
        - MYSQL_DATABASE={MYSQL_DATABASE}
        - MYSQL_USER={MYSQL_USER}
        - MYSQL_PASSWORD={MYSQL_PASSWORD}
        - MYSQL_ROOT_PASSWORD={MYSQL_ROOT_PASSWORD}
        - TZ=${WORKSPACE_TIMEZONE}
      volumes:
        - ${DATA_SAVE_PATH}/mysql:/var/lib/mysql
        - ${MYSQL_ENTRYPOINT_INITDB}:/docker-entrypoint-initdb.d
      ports:
        - "${MYSQL_PORT}:3306"
      networks:
        - backend

docker中的mysql安装在33060端口。我是第一次尝试laradock。在尝试了几种配置之后,我现在正在呼唤复仇者联盟!

最佳答案

通过具有以下mysql设置解决了该问题。

测试项目/.env:

DB_CONNECTION=mysql
DB_HOST=mysql
DB_PORT=3306
DB_DATABASE=testdb
DB_USERNAME=root
DB_PASSWORD=root

测试项目/laradock/.env:
MYSQL_VERSION=8.0
MYSQL_DATABASE=default
MYSQL_USER=default
MYSQL_PASSWORD=secret
MYSQL_PORT=33060
MYSQL_ROOT_PASSWORD=root
MYSQL_ENTRYPOINT_INITDB=./mysql/docker-entrypoint-initdb.d

testproject/laradock/docker-compose.yml
mysql:
      build:
        context: ./mysql
        args:
          - MYSQL_VERSION=${MYSQL_VERSION}
      environment:
        - MYSQL_DATABASE=${MYSQL_DATABASE}
        - MYSQL_USER=${MYSQL_USER}
        - MYSQL_PASSWORD=${MYSQL_PASSWORD}
        - MYSQL_ROOT_PASSWORD=${MYSQL_ROOT_PASSWORD}
        - TZ=${WORKSPACE_TIMEZONE}
      volumes:
        - ${DATA_SAVE_PATH}/mysql:/var/lib/mysql
        - ${MYSQL_ENTRYPOINT_INITDB}:/docker-entrypoint-initdb.d
      ports:
        - "${MYSQL_PORT}:3306"
      networks:
        - backend

我还在 laradock 文件夹中运行了以下两个命令
docker-compose down

docker-compose up -d mysql

关于php - 使用 laradock 迁移 Laravel 数据库失败,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46931196/

相关文章:

Laravel - 复制图像

php - Laravel 5.0::更改密码后无法登录

docker - Docker 和 Letsencrypt 证书的 Keycloak 错误

php - 在 Laravel 5.2 Registry Form Update-proof 中传递参数

php - Laravel 多个可选参数不起作用

php - codeigniter INSERT 仅插入变量名称

php - https 表单验证未传递 session 变量 - PHP

javascript - AJAX 更改页面内容不能多次工作?

docker - Docker 的 Google Cloud Logging 驱动程序

虚拟机中的 Docker