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

Nguồn: Viblo

Bình luận
Vui lòng đăng nhập để bình luận
Một số bài viết liên quan