无法在Docker上的Laravel 6中连接到数据库

时间:2019-12-16 16:00:44

标签: mysql database docker laravel-6

我一直在努力在docker上设置Laravel 6,并通过nginx进行php 7.4mysql 8docker设置。

我能够从工作台连接到mysql,但无法从Laravel连接。它说我最初以127.0.0.1为主机时拒绝连接,当它更改为localhost时,它说“没有这样的文件或目录”。

这些是我的环境设置

DB_CONNECTION=mysql
DB_HOST=localhost
DB_PORT=3306
DB_DATABASE=laraveltest
DB_USERNAME=root
DB_PASSWORD=docker

我的database.php

        'mysql' => [
            'driver' => 'mysql',
            'url' => env('DATABASE_URL'),
            'host' => env('DB_HOST', '127.0.0.1'),
            'port' => env('DB_PORT', '3306'),
            'database' => env('DB_DATABASE', 'laraveltest'),
            'username' => env('DB_USERNAME', 'root'),
            'password' => env('DB_PASSWORD', 'docker'),
            'unix_socket' => env('DB_SOCKET', ''),
            'charset' => 'utf8mb4',
            'collation' => 'utf8mb4_unicode_ci',
            'prefix' => '',
            'prefix_indexes' => true,
            'strict' => true,
            'engine' => null,
            'options' => extension_loaded('pdo_mysql') ? array_filter([
                PDO::MYSQL_ATTR_SSL_CA => env('MYSQL_ATTR_SSL_CA'),
            ]) : [],
        ],

从工作台成功连接

"Host: 127.0.0.1
Port: 3306
User: root
SSL: enabled with DHE-RSA-AES256-SHA

A successful MySQL connection was made with
the parameters defined for this connection."

我将环境文件更改为

DB_CONNECTION=mysql
DB_HOST=database
DB_PORT=33060
DB_DATABASE=laraveltest
DB_USERNAME=root
DB_PASSWORD=docker

现在我得到了另一个错误

PDO :: __ construct():/ var / www / vendor / laravel / framework / src / Illuminate / Database / Connectors / Connector.php:70

中的数据过早终止(mysqlnd_wireprotocol.c:381)

我不确定是否与加密有关。

docker-compose.yml

version: '3'

services:
  nginx:
    build:
      context: ./nginx
    volumes:
      - ../laravelproject:/var/www
      - ./nginx/nginx.conf:/etc/nginx/nginx.conf
      - ./nginx/sites/:/etc/nginx/sites-available
      - ./nginx/conf.d/:/etc/nginx/conf.d
    depends_on:
      - php-fpm
    ports:
      - "80:80"
      - "443:443"

  php-fpm:
    build:
      context: ./php-fpm
    volumes:
      - ../laravelproject:/var/www
      - ../laravelproject/serve_config/custom.ini:/usr/local/etc/php/conf.d/custom.ini
    links:
      - database:mysql

  database:
    build:
        context: ./database
    environment:
      - MYSQL_DATABASE=mydb
      - MYSQL_USER=myuser
      - MYSQL_PASSWORD=secret
      - MYSQL_ROOT_PASSWORD=docker
    volumes:
      - ./database/data.sql:/docker-entrypoint-initdb.d/data.sql
    command: ['--default-authentication-plugin=mysql_native_password']
    ports:
      - "3306:3306"

0 个答案:

没有答案