Laravel sail 添加 MongoDB

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 协议》,转载必须注明作者和本文链接
《L01 基础入门》
我们将带你从零开发一个项目并部署到线上,本课程教授 Web 开发中专业、实用的技能,如 Git 工作流、Laravel Mix 前端工作流等。
《L02 从零构建论坛系统》
以构建论坛项目 LaraBBS 为线索,展开对 Laravel 框架的全面学习。应用程序架构思路贴近 Laravel 框架的设计哲学。
讨论数量: 1
jinhuaxiao

有同时用mysql 和Mongodb 的情况不,这样DB_PORT 这些写啥

1年前 评论

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!