0%

2021-03-19 MongoDB 在 docker 下开启权限验证并用 mongoose 连接

MongoDB 在 docker 下开启权限验证并用 mongoose 连接

本人喜欢直接用 docker-compose.yml 来部署 docker 项目,虽然对于集群可能还不够看,但是单机使用已经绰绰有余了。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
# docker-compose.yml
version: "3"

services:
# 这里配置自己的项目
server:
build: .
restart: always
ports:
- "8080:8080"
environment:
NODE_ENV: production
MONGO_URL: "mongodb://mongo:27017/"
depends_on: # 一定要先启动 MongoDB
- mongo

mongo:
image: mongo:4.2.6
restart: always
volumes:
- mongo-data:/data/db
environment:
MONGO_INITDB_ROOT_USERNAME: "admin" #设置root用户
MONGO_INITDB_ROOT_PASSWORD: "123456"
volumes:
mongo-data:

接下来就到了连接数据库了,这里采用 mongoose 这个库来连接

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
import mongoose from 'mongoose'
const url = process.env.MONGO_URL
const db = mongoose.createConnection(url, {
auth: {
user: process.env.DB_USER || 'admin',
password: process.env.DB_PASSWORD || '123456',
},
dbName: 'docker',
useNewUrlParser: true,
useUnifiedTopology: true,
useCreateIndex: true,
useFindAndModify: false,
})
db.on('error', console.error.bind(console, '连接错误 :'))
db.once('open', () => {
console.log('mongoose 已连接')
})

当使用 root 用户连接的时候,一定要直接连到根目录,例如 mongodb://mongo:27017/,末尾是不带 dbName 的。如果是 dbName 的 User,则要连到指定 db 才行。

本文作者:草梅友仁
本文地址: https://blog.cmyr.ltd/archives/215037a.html
版权声明:转载请注明出处!

坚持原创技术分享,您的支持将鼓励我继续创作!