Laravel sail 添加 MongoDB

sail 本身没有附带 MongoDB 和 php MongoDB的 拓展,但是 sail 是使用 docker 创建的,我们可以很方便的去修改任何东西
安装PHP扩展 首先在目录下执行命令,发布配置文件到当前的 docker 目录下

sail artisan sail:publish

【Laravel sail 添加 MongoDB】进入到 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

好了,愉快的玩耍去吧

    推荐阅读