Laradvel数据库迁移使用laradock失败

时间:2017-10-25 11:26:42

标签: 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容器的设置

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。在尝试了几个配置后,我正在呼唤复仇者!

1 个答案:

答案 0 :(得分:0)

通过以下mysql设置解决了这个问题。

testproject / .ENV:

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

testproject / 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 /搬运工-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