Laravel sail 新增 MongoDB

Enda發表於2021-11-11

sail 本身沒有附帶 MongoDB 和 php MongoDB的 擴充,但是 sail 是使用 docker 建立的,我們可以很方便的去修改任何東西

安裝PHP擴充套件

首先在目錄下執行命令,釋出配置檔案到當前的 docker 目錄下

sail artisan sail:publish

進入到 docker 目錄,找到對應的php版本目錄,開啟 Dockerfile

Laravel sail 新增 MongoDB

編輯第31行,在最後加上 php8.0-mongodb,加完以後如圖

Laravel sail 新增 MongoDB

然後在命令列重新構建

sail build --no-cache

構建完成後,我們啟動容器

sail up -d

到這一步,PHP的MongoDB擴充就安裝好了

安裝 jenssegers/mongodb

直接執行命令即可

sail composer require jenssegers/mongodb

安裝MongoDB資料庫

開啟 docker-compose.yml 檔案,新增以下內容,加在其他服務後面即可

mongo:
    image: 'mongo:4.4'
    restart: always
    environment:
        MONGO_INITDB_ROOT_USERNAME: '${DB_USERNAME}'
        MONGO_INITDB_ROOT_PASSWORD: '${DB_PASSWORD}'
        MONGO_INITDB_DATABASE: '${DB_DATABASE}'
    volumes:
        - 'sailmongo:/data/db'
    networks:
        - sail

然後申明 volume

volumes:
    sailmysql:
        driver: local
    sailredis:
        driver: local
    sailmeilisearch:
        driver: local
    sailmongo: # 這個是新加的
        driver: local

配置 laravel 連線

最後,我們開啟 config/database.php

'mongodb' => [ 
    'driver' => 'mongodb', 
    'host' => env('DB_HOST'), 
    'port' => env('DB_PORT'), 
    'database' => env('DB_DATABASE') , 
    'username' => env('DB_USERNAME'), 
    'password' => env('DB_PASSWORD'), 
    'options' => [ 
        'database' => env('DB_AUTHENTICATION_DATABASE', 'admin'), 
    ], 
]

修改 .env

DB_CONNECTION = mongodb
DB_HOST = mongo
DB_PORT = 27017 
DB_DATABASE = laravel_sail
DB_USERNAME = root
DB_PASSWORD = root

最後重新構建一下

sail up -d

好了,愉快的玩耍去吧

本作品採用《CC 協議》,轉載必須註明作者和本文連結

相關文章