+7

Cài đặt Laravel kết nối với Mongodb

Untitled

Laravel-Sail có hỗ trợ Mongodb không?

Như các bạn đã biết Laravel-Sail không hỗ trợ hỗ trợ Mongodb, hôm này mình sẽ hướng dẫn các bạn cách thêm Service Mongodb vào Laravel-Sail và cài đặt các thành phần cần thiết để có thể Laravel có thể kết nối được với Service Laravel

Khởi tạo dữ án với Laravel Sail

Chúng ta thống nhất tên dự án sẽ là "laravel-sail-mongodb" và tiến hành cài đặt theo lệnh sau

curl -s "https://laravel.build/laravel-sail-mongodb" | bash

Untitled

Truy cập thư mục dự án và khởi chạy Docker

cd laravel-sail-mongodb
./vendor/bin/sail up -d

Untitled

Thêm mới Service Mongodb

Trước khi có thể điều chỉnh thêm service mongodb chúng ta cần public sail bằng cách thực thi lệnh sau

./vendor/bin/sail artisan sail:publish

Untitled

  • Lưu ý: trước khi thực hiện điều chỉnh file docker-compose.yml bạn cần down docker-composer để không gây lỗi sau khi điều chỉnh và start lại
./vendor/bin/sail down

Tiếp tục mở file docker-compose.yml sau khi thấy nó được copy ra ngoài thư mục góc, và thêm service mongodb

# For more information: https://laravel.com/docs/sail
version: '3'
services:
    laravel.test:
        build:
            context: ./docker/8.0
            dockerfile: Dockerfile
            args:
                WWWGROUP: '${WWWGROUP}'
        image: sail-8.0/app
        ports:
            - '${APP_PORT:-80}:80'
        environment:
            WWWUSER: '${WWWUSER}'
            LARAVEL_SAIL: 1
            XDEBUG_MODE: '${SAIL_XDEBUG_MODE:-off}'
            XDEBUG_CONFIG: '${SAIL_XDEBUG_CONFIG:-client_host=host.docker.internal}'
        volumes:
            - '.:/var/www/html'
        networks:
            - sail
        depends_on:
            - mongo
    mongo:
        image: 'mongo:5.0'
        restart: always
        ports:
            - '${DB_PORT:-27017}:27017'
        environment:
            MONGO_INITDB_ROOT_USERNAME: '${DB_USERNAME}'
            MONGO_INITDB_ROOT_PASSWORD: '${DB_PASSWORD}'
            MONGO_INITDB_DATABASE: '${DB_DATABASE}'
        volumes:
            - 'sailmongo:/data/db/sail'
        networks:
            - sail
networks:
    sail:
        driver: bridge
volumes:
    sailmongo:
        driver: local

Tới bước này, xem như Docker của bạn đã cài đặt thành công một service mongodb mới

Cập nhật thành phần cần thiết để PHP có thể tương tác với Mongodb

Trong file docker/8.0/Dockerfile chúng ****ta cần thêm các thành phần để giúp PHP có thể kết nối được với Mongodb

Củ thể ở đây, chúng ta sẽ cài đặt thêm php8.0-mongodb trên Ubuntu

php8.0-mongodb

Thêm vào sau php8.0-redis như hình dưới

Untitled

Tiền hành build lại Service này để có được cập nhật

./vendor/bin/sail build

Untitled

Kiểm tra kết quả Docker

Sau khi bạn thực hiện các bước ở trên, xem như các bước cập nhật docker và thành phần cần thiết để đảm bảo PHP có thể kết nối được với mongodb đã xong

Chạy lệnh để khởi động lại tất cả service

./vendor/bin/sail up -d

Untitled

Như vậy chúng ta đã thấy trong dự án này có 2 service gồm ( Web và mongodb )

Điều chỉnh cài đặt Laravel đế kết nối được với Service Mongodb setup ở trên

Trong file .env điều chỉnh lại thông tin như dưới

DB_CONNECTION=mongodb#Thành phần này sẽ được định nghĩa trong config
DB_HOST=mongo#Tên này là tên service khi chúng ta điều chỉnh docker-compose
DB_PORT=27017#Lưu ý là vì bên trong các docker gọi cho nhau nên port sẽ là 27017
DB_DATABASE=laravel_sail_mongodb
DB_USERNAME=sail
DB_PASSWORD=password

Untitled

Trong file config/database.php thêm config dành cho connection mongodb

'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'),
            ],
        ],

Untitled

Cài đặt Package hỗ trợ Mongodb

./vendor/bin/sail composer require jenssegers/mongodb

Untitled

Sau khi cài đặt Package xong tiến hành chạy migration

./vendor/bin/sail artisan migrate

Untitled

Nếu kết quả được như hình trên, thì mọi thứ cài đặt của chúng ta đã hoạt động

Từ giờ Code của các bạn có thể hoạt động được với Mongodb

Do nội dung bài viết cũng khá dài, mình xin kết thúc tại đây xem như chung ta đã xong vấn đề cài đặt để đảm bảo hoạt động giữa Laravel & Mongodb

Qua bài kế tiếp trong mình sẽ giới thiệu các bạn về các thao tác cở bản khi làm việc với Mongodb

Repository: https://github.com/qt91/laravel-sail-mongodb


All Rights Reserved

Viblo
Let's register a Viblo Account to get more interesting posts.