在mac上使用docker部署Mongo数据库
Posted 马会东的博客
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了在mac上使用docker部署Mongo数据库相关的知识,希望对你有一定的参考价值。
拉取镜像
- 打开网址 https://hub.docker.com/ ,搜索 mongo ,https://hub.docker.com/_/mongo
- 执行命令 docker pull mongo
启动容器
- 执行命令 docker image ,查看到 mongo的tag是 5.0.16
- 启动命令 docker run -dit --name mongo5 -p 27017:27017 -v /Users/huidongma/data/mongodb:/data/db -e MONGO_INITDB_ROOT_USERNAME=smkdb -e MONGO_INITDB_ROOT_PASSWORD=smkdb123 mongo:5.0.16
创建用户并授权数据库
- 链接数据库 mongo -u smkdb -p smkdb123
- 创建用户:
use smkdb
db.createUser(
user: "smkdb",
pwd: "smkdb123",
roles: [role: "readWrite", db: "smkdb"]
)
导入数据库备份
mongorestore -u smkdb -p smkdb123 --db smkdb /data/db/mhd
MongooseModule:无法连接到数据库。在带有 Mongo 的 dockerized Nestjs 应用程序上
【中文标题】MongooseModule:无法连接到数据库。在带有 Mongo 的 dockerized Nestjs 应用程序上【英文标题】:MongooseModule: Unable to connect to the database. On a dockerized Nestjs app with Mongo 【发布时间】:2021-08-23 14:04:13 【问题描述】:我正在尝试使用 docker-compose 启动 react-nestjs-mongo db 应用程序,但由于某种原因它似乎不起作用。 docker-compose --build
输出显示如下:
服务器 | [Nest] 32 - 06/06/2021,凌晨 3:10:25 [MongooseModule] 无法连接到数据库。正在重试 (7)... +33006ms
数据库 | "t":"$date":"2021-06-06T03:10:27.406+00:00","s":"I", "c":"STORAGE", "id":22430, "ctx":"WTCheckpointThread","msg":"WiredTiger 消息","attr":"消息":"[1622949027:406819][1:0x7f9ae2c3b700], WT_SESSION.checkpoint:[WT_VERB_CHECKPOINT_PROGRESS] 保存检查点 快照最小值:7,快照最大值:7 快照计数:0,最早的时间戳: (0, 0) ,元检查点时间戳:(0, 0)"
这是我的 docker-compose:
version: "3.5"
services: client:
container_name: client
build: ./client
ports:
- 3000:3000
depends_on:
- server
server:
container_name: server
build: ./server
ports:
- 8000:8000
depends_on:
- mongodb
links:
- mongodb
mongodb:
container_name: database
image: mongo
restart: always
ports:
- "27017:27017"
environment:
MONGO_INITDB_ROOT_USERNAME: root
MONGO_INITDB_ROOT_PASSWORD: example
我的 app.modules.ts 文件如下所示:
import Module from '@nestjs/common';
import AppController from './app.controller';
import AppService from './app.service';
import MongooseModule from '@nestjs/mongoose';
@Module(
imports: [
MongooseModule.forRoot('mongodb://localhost:27017/nestjs',
useNewUrlParser: true,
),
],
controllers: [AppController],
providers: [AppService],
)
class AppModule
谁能解释一下为什么这不起作用?
【问题讨论】:
【参考方案1】:您正在使用 docker-compose 。因此,您没有连接“localhost”,但它应该是您在 docker-compose 文件中定义的“服务”的地址。
而不是 'mongodb://localhost:27017/nestjs' ,您应该使用(在您的情况下,您在 docker-compose 中定义的服务名称是 mongodb 。您应该使用 'mongodb://mongodb:27017/nestjs'
【讨论】:
以上是关于在mac上使用docker部署Mongo数据库的主要内容,如果未能解决你的问题,请参考以下文章
云原生之Docker实战使用Docker部署MongoDB数据库管理工具Mongo-Express
kubernetes (kubectl) 端口转发在 Mac 上无法用于 IBM MQ/Docker 部署