Laravel Sail Docker MySQL連線問題
P粉949190972
P粉949190972 2023-08-27 00:43:45
0
1
572
<p>我正在嘗試透過部署在Docker容器中的Laravel應用程式存取資料庫,但出現以下錯誤訊息:</p> <pre class="brush:php;toolbar:false;">SQLSTATE[HY000] [2002] Connection refused SELECT * FROM `posts`</pre> <p>資料庫中有一個名為posts的表,我正在嘗試從localhost/posts存取。</p> <p>/posts的Blade範本如下:</p>
@extends('app')
@section('內容')
    

貼文索引頁

@forelse($posts 作為 $post)

{{ $post->title }}

; @空的

沒有貼文!

@endforelse @endsection
<p>負責/posts的web.php中的路由如下:</p>
Route::resource('/posts', PostController::class)->only(['index', 'store']);< /預>
<p>PostController的索引函數如下:</p>
公用函數index()
    {
        $posts = Post::all();
        return view('posts.index', 緊湊('posts'));
    }</pre>
<p>我的.env檔如下:</p>
APP_NAME=Laravel
APP_ENV=本地
APP_KEY=base64:1HEk/HaN8IL/wV8q4DCzpvmM/cYRDvGAIe 0DxS9ggo=
APP_DEBUG=true
APP_URL=http://localhost

LOG_CHANNEL=堆疊
LOG_DEPRECATIONS_CHANNEL=空
LOG_LEVEL=調試

DB_CONNECTION=mysql
DB_HOST=127.0.0.1
資料庫連接埠=3307
DB_DATABASE=laravel_essentials_app
DB_USERNAME=航行
DB_PASSWORD=密碼

BROADCAST_DRIVER=日誌
CACHE_DRIVER=文件
FILESYSTEM_DISK=本地
QUEUE_CONNECTION=同步
SESSION_DRIVER=文件
SESSION_LIFETIME=120

MEMCACHED_HOST=memcached

REDIS_HOST=redis
REDIS_PASSWORD=空
REDIS_PORT=6379

MAIL_MAILER=smtp
MAIL_HOST=mailhog
郵件連接埠=1025
MAIL_USERNAME=空
MAIL_PASSWORD=空
MAIL_ENCRYPTION=空
MAIL_FROM_ADDRESS=“hello@example.com”
MAIL_FROM_NAME=“${APP_NAME}”

AWS_ACCESS_KEY_ID=
AWS_SECRET_ACCESS_KEY=
AWS_DEFAULT_REGION=us-east-1
AWS_BUCKET=
AWS_USE_PATH_STYLE_ENDPOINT=false

PUSHER_APP_ID=
PUSHER_APP_KEY=
PUSHER_APP_SECRET=
PUSHER_HOST=
PUSHER_PORT=443
PUSHER_SCHEME=https
PUSHER_APP_CLUSTER=mt1

VITE_PUSHER_APP_KEY=“${PUSHER_APP_KEY}”
VITE_PUSHER_HOST=“${PUSHER_HOST}”
VITE_PUSHER_PORT=“${PUSHER_PORT}”
VITE_PUSHER_SCHEME=“${PUSHER_SCHEME}”
VITE_PUSHER_APP_CLUSTER=“${PUSHER_APP_CLUSTER}”
<p>我的docker-compose.yml檔案如下:</p>
# 欲了解更多資訊:https://laravel.com/docs/sail
版本:'3'
服務:
    laravel.測試:
        建造:
            上下文:./vendor/laravel/sail/runtimes/8.1
            dockerfile: Dockerfile
            參數:
                WWWGROUP: '${WWWGROUP}'
        圖:sail-8.1/app
        額外主機:
            - 'host.docker.internal:主機閘道'
        連接埠:
            - '${APP_PORT:-80}:80'
            - '${VITE_PORT:-5173}:${VITE_PORT:-5173}'
        環境:
            WWWUSER: '${WWWUSER}'
            拉拉維爾_航行:1
            XDEBUG_MODE: '${SAIL_XDEBUG_MODE:-關閉}'
            XDEBUG_CONFIG: '${SAIL_XDEBUG_CONFIG:-client_host=host.docker.internal}'
        卷:
            - '.:/var/www/html'
        網路:
            - 航行
        依賴取決於:
            - mysql
            - 雷迪斯
    mysql:
        圖:'mysql/mysql-server:8.0'
        連接埠:
            - '${FORWARD_DB_PORT:-3307}:3306'
        環境:
            MYSQL_ROOT_PASSWORD: '${DB_PASSWORD}'
            MYSQL_ROOT_HOST:“${DB_HOST}”
            MYSQL_DATABASE: '${DB_DATABASE}'
            MYSQL_USER: '${DB_USERNAME}'
            MYSQL_PASSWORD: '${DB_PASSWORD}'
            MYSQL_ALLOW_EMPTY_PASSWORD:1
            
        卷:
            - 'sail-mysql:/var/lib/mysql'
            - './vendor/laravel/sail/database/mysql/create-testing-database.sh:/docker-entrypoint-initdb.d/10-create-testing-database.sh'
        網路:
            - 航行
        健康檢查:
            測試:[“CMD”、“mysqladmin”、“ping”、“-p${DB_PASSWORD}”]
            重試次數:3
            超時:5秒
    雷迪斯:
        圖:'redis:高山'
        連接埠:
            - '${FORWARD_REDIS_PORT:-6379}:6379'
        卷:
            - 'sail-redis:/data'
        網路:
            - 航行
        健康檢查:
            測試:[“CMD”、“redis-cli”、“ping”]
            重試次數:3
            超時:5秒
網路:
    帆:
        司機:橋
卷:
    帆-mysql:
        司機:本地
    帆-redis:
        驅動程式:本地</pre>
<p>我的作業系統是Windows 11,我在上面運行MySQL Workbench。這就是為什麼我暴露3307端口而不是3306端口的原因。</p>

使用當前設置,我可以在wsl終端機中無問題地運行php artisan migrate。

<p>為了避免連線被拒絕錯誤,我可以從 localhost/posts 存取posts 來做什麼?</p> <p><strong>解決方案</strong> 透過將.env中的DB_HOST更改為mysql,同時將DB_PORT更改為3306來解決問題。</p> <p><strong>編的.env檔</strong></p>
DB_CONNECTION=mysql
DB_HOST=mysql
資料庫連接埠=3306
DB_DATABASE=laravel_essentials_app
DB_USERNAME=航行
DB_PASSWORD=密碼</pre></p>            
P粉949190972
P粉949190972

全部回覆(1)
P粉547420474

在您的.env檔案中將DB_HOST的值設為mysql

#
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板