sail 本身没有附带 MongoDB 和 php MongoDB的 拓展,但是 sail 是使用 docker 创建的,我们可以很方便的去修改任何东西
安装PHP扩展
首先在目录下执行命令,发布配置文件到当前的 docker
目录下
sail artisan sail:publish
进入到 docker 目录,找到对应的php版本目录,打开 Dockerfile
编辑第31行,在最后加上 php8.0-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
好了,愉快的玩耍去吧