我一直在努力在docker上设置Laravel 6
,并通过nginx
进行php 7.4
,mysql 8
和docker
设置。
我能够从工作台连接到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"