精品欧美一区二区三区在线观看 _久久久久国色av免费观看性色_国产精品久久在线观看_亚洲第一综合网站_91精品又粗又猛又爽_小泽玛利亚一区二区免费_91亚洲精品国偷拍自产在线观看 _久久精品视频在线播放_美女精品久久久_欧美日韩国产成人在线

MongoDB 云數據庫太貴了,試一下用 Docker 安裝,也不是很難

數據庫 MongoDB 運維
我們從 MongoDB 的安裝、運行配置、授權驗證等方面,全面介紹了如何用 Docker 將 MongoDB 運行起來,并在項目中連接使用。

我想既然接口跑在 Serverless 上,索性數據庫也買一個 MongoDB 云數據庫吧,這樣大家完全不需要買服務器自己部署,對前端來說門檻更低。

然后我找到了云數據庫,看到價格傻眼了:

圖片

確實買不起啊,還是我自己搭建吧。還好我有好基友 Docker,搭建一個 MongoDB 不費事。

目前 MongoDB 最新版本是 7.x,我們用上一個版本 6.x。

運行容器啟動 MongoDB

安裝 Docker 大家直接從 官網 下載安裝就可以了,測試的話在本地裝一個 Docker Desktop 很方便。

(1)拉取 MongoDB 的官方鏡像:

$ docker pull mongo:6

(2)在宿主環境中創建兩個目錄,作為容器數據卷:

/docker/mongodb/data/    #數據庫數據目錄
/docker/mongodb/dump/    #備份數據目錄

(3)執行命令,把 MongoDB 容器運行起來:

$ docker run --name mongodb \
    --restart=always \
    -p 27017:27017 \
    -v /docker/mongodb/data:/data/db \
    -v /docker/mongodb/dump:/var/dump \
    -d mongo:6 --auth

上面的幾個重要參數說明一下:

  • --restart=always:容器退出時自動重啟,這個很有用。
  • 27017:用于連接 MongoDB 的端口。
  • --auth:開啟授權驗證。
  • -d:后臺運行,要加。

運行成功后,使用 docker ps 命令查看容器列表:

圖片

圖中圈住的地方就是容器ID,接著進入這個容器,并連接數據庫:

$ docker exec -it <container_id>  /bin/bash
$ mongosh  # 進入數據庫,不需要用戶名

mongosh 是從  MongoDB 4.2 開始推出的 shell 工具,取代了之前的 mongo 命令,用于執行數據庫的操作,這里要留意一下。

圖片

上圖可以看到,默認連接到了 test 數據庫。

現在切換到 admin 數據庫(身份驗證數據庫),創建一個超級用戶:

$ use admin # 切換數據庫
$ db.createUser({
  user:'root',
  pwd:'mongo_root_pass',
  roles:[{
    role:'root',
    db:'admin'
  }]
})

接下來使用這個用戶登錄 MongoDB,就可以執行“創建數據庫、創建用戶”等操作了。

啟動容器并創建用戶

上一步我們先啟動容器,然后再創建超級用戶,實際上這兩個步驟可以一次完成。

在運行容器時,如果傳入下面的兩個環境變量:

  • MONGO_INITDB_ROOT_USERNAME:用戶名
  • MONGO_INITDB_ROOT_PASSWORD:密碼

MongoDB 會自動在 admin 數據庫中創建該用戶,指定角色為 root,并自動啟用身份驗證(--auth)。

所以上面的運行容器命令可以優化為這樣:

$ docker run --name mongodb \
    --restart=always \
    -p 27017:27017 \
    -v /docker/mongodb/data:/data/db \
    -v /docker/mongodb/dump:/var/dump \
    -e MONGO_INITDB_ROOT_USERNAME=root \
    -e MONGO_INITDB_ROOT_PASSWORD=mongo_root_pass \
    -d mongo:6

這樣 MongoDB 啟動之后,便自動創建了超級用戶。

啟動時自動執行腳本

默認的 admin 數據庫用于身份驗證。當真正存儲數據時,需要創建一個新的數據庫。

創建數據庫和用戶需要權限,一般我們會用超級用戶登錄到 admin 數據庫,然后再創建其他數據庫和用戶,如下:

$ docker exec -it <container_id>  /bin/bash # 進入容器
$ mongosh admin --username root --password mongo_root_pass # 登錄 admin 數據庫
$ use test_db  # 創建/切換數據庫

然而如果是在 CI(自動化部署)環境中,我們希望 MongoDB 啟動后自動創建需要的數據庫和用戶,而不是每次都要手動創建,這時應該怎么辦呢?

這時候要借助一個 Docker 下的特殊目錄:docker-entrypoint-init.d。

該目錄下可以自定義腳本文件,在容器第一次啟動時自動執行。mongo 鏡像可以識別該目錄下的 .sh 和 .js 文件,并按照順序執行。

那么我們就在 /docker/mongodb 目錄下創建一個 mongo-init.js 文件,并在運行容器時掛載:

-v /docker/mongodb/mongo-init.js:/docker-entrypoint-initdb.d/mongo-init.js

現在在該文件中編寫初始化邏輯,比如創建一個用戶:

// mongo-init.js
db.createUser({
  user: 'test_user',
  pwd: 'test_pass',
  roles: [
    {
      role: 'dbOwner',
      db: 'test_db',
    },
  ],
});

提示:docker-entrypoint-init.d 目錄下的腳本只會在第一次運行容器的時候執行。如果通過 -v 掛載過數據,那么就不是第一次。可以去掉 -v 模擬第一次運行。

上面的 JS 文件中可以訪問 db 對象,因為它在 mongosh 環境下執行。默認情況下,db 代表 “test” 數據庫。

如果我們要切換數據庫,命令是 use <db_name>。然而在 JS 文件中,顯然這種語法是不支持的。

關于如何在 JS 文件中切換數據庫,我找了很多方法,翻了一整天的文檔,終于找到了。

就是它:db.getSiblingDB(),等同于 use 命令。

因此,在 test_db 數據庫中創建/切換用戶,可以修改如下:

db = db.getSiblingDB('test_db');

db.createUser({
  user: 'test_user',
  pwd: 'test_pass',
  roles: [
    {
      role: 'dbOwner',
      db: 'test_db',
    },
  ],
});

通過 db.getSiblingDB() 方法,我們可以在 JS 腳本中創建多個數據庫和用戶。

如果你不想在 JS 代碼中創建/切換數據庫,更簡單的方法是,用環境變量 MONGO_INITDB_DATABASE 指定腳本在某個數據庫下執行。

Docker Compose 運行

如果你覺得運行容器的命令太長,那么使用 Docker Compose 也是一個不錯的選擇。

首先創建 compose.yml 配置文件如下:

version: '3.1'

services:
  mongodb:
    image: mongo:6
    restart: always
    environment:
      MONGO_INITDB_ROOT_USERNAME: root
      MONGO_INITDB_ROOT_PASSWORD: mongo_root_pass
      MONGO_INITDB_DATABASE: test_db
    volumes:
      - '/docker/mongodb/data:/data/db'
      - '/docker/mongodb/dump:/var/dump'
      - '/docker/mongodb/mongo-init.js:/docker-entrypoint-initdb.d/mongo-init.js'

然后運行啟動命令:

$ docker compose up -d

客戶端連接到 MongoDB

在啟動 MongoDB 時,傳入 --auth 參數表示開啟授權驗證,不傳則不開啟。

如果未開啟授權驗證,連接 MongoDB 不需要賬號密碼,連接 URL 如下:

mongodb://127.0.0.1:27017

如果開啟授權驗證,則連接 URL 中必須指定數據庫、賬號、密碼,如下:

mongodb://user:pass@127.0.0.1:27017/dbname

在《前端開發實戰派》的項目中使用 mongoose 連接數據庫,有了上面的 url 和用戶名密碼,連接方法如下:

const mongoose = require('mongoose')

mongoose.connect('mongodb://127.0.0.1:27017/dbname', {
   user: 'username',
   pass: 'password',
}).then(() => {
   console.log('數據庫連接成功:')
}).catch(err => {
   console.log('數據庫連接失敗:', err)
})

現在,你可以在我的開源項目 仿掘金博客系統 中添加自己的數據庫配置,項目就可以運行起來了。

總結

前面我們從 MongoDB 的安裝、運行配置、授權驗證等方面,全面介紹了如何用 Docker 將 MongoDB 運行起來,并在項目中連接使用。

責任編輯:姜華 來源: 程序員成功
相關推薦

2010-12-06 09:10:02

LightSwitch

2022-12-03 18:24:13

數據能力場景

2023-02-08 09:02:05

VS Code摸魚神器

2023-11-01 20:06:32

云計算前端后端

2022-06-29 10:04:01

PiniaVuex

2019-05-31 08:23:00

Oracle數據庫云渡劫

2021-01-21 10:23:43

數據庫架構技術

2018-10-16 16:00:39

數據庫鎖舞MySQL

2021-08-04 09:00:53

Python數據庫Python基礎

2020-10-15 11:18:13

Linux內核虛擬機

2022-03-02 10:53:22

Postman工具開發

2022-08-08 10:09:08

Vitest單元測試

2011-08-03 15:14:17

Excel XP數據庫功能

2023-08-01 15:46:18

數據

2009-07-24 13:11:52

敏捷開發

2010-03-17 17:33:47

云計算

2011-10-28 16:14:12

思杰云計算桌面虛擬化

2021-08-26 12:27:47

云數據庫數據庫云計算

2013-11-20 13:41:32

IE微軟解決方法

2021-01-21 07:31:11

Filter框架權限
點贊
收藏

51CTO技術棧公眾號

一区二区三区四区五区精品视频 | 欧美天堂影院| 午夜精品久久久久久久久| 蜜桃欧美视频| 不卡视频在线播放| 久久av最新网址| 久热精品视频在线观看一区| 可以直接看的无码av| 日韩黄色在线| 福利一区视频在线观看| 正在播放一区| 国产youjizz在线| 懂色av一区二区夜夜嗨| 国产精品精品视频一区二区三区| 国产精品白嫩白嫩大学美女| 牛牛视频精品一区二区不卡| 欧洲一区二区三区免费视频| 99热久久这里只有精品| 三级外国片在线观看视频| 99久久精品免费看国产| 91精品视频网站| 亚洲av无码不卡| 一区二区激情| 久久久久久国产精品三级玉女聊斋| 精品国产成人亚洲午夜福利| 精品久久对白| 欧美成人福利视频| 手机av在线网站| 久久精品黄色| 欧美偷拍一区二区| 成人观看免费完整观看| 日本三级韩国三级欧美三级| 中文字幕一区二区三区蜜月| 日韩电影免费观看高清完整| 亚洲色图 校园春色| 国产成人精品三级麻豆| 成人做爰www免费看视频网站| 亚洲精品91天天久久人人| 国产欧美短视频| 欧美国产乱视频| 国产三级国产精品国产国在线观看| av在线不卡免费观看| 亚洲欧洲中文天堂| 偷拍女澡堂一区二区三区| 97久久亚洲| 欧美r级电影在线观看| 波多野结衣中文字幕在线播放| 日本午夜免费一区二区| 在线看国产一区| 久久精品香蕉视频| 精品3atv在线视频| 欧美午夜精品久久久久久孕妇| 无码内射中文字幕岛国片| 日本综合字幕| 在线免费观看视频一区| 色一情一区二区| 国产精品亚洲一区二区在线观看 | 国产又大又黄又猛| 国产精品成人国产| 91精品国产综合久久婷婷香蕉| 自拍偷拍一区二区三区四区| 日韩一区二区三区四区五区| 欧美精品色综合| 女同性αv亚洲女同志| jizz久久精品永久免费| 亚洲国产精品系列| 蜜桃传媒一区二区亚洲av | 国产一区二区三区在线观看网站| 真实乱视频国产免费观看| 成人免费在线观看av| 久久九九热免费视频| 欧美成人一二三区| 精品动漫一区| 国产精品va在线播放| 国产又爽又黄又嫩又猛又粗| 处破女av一区二区| 免费99视频| 日本激情在线观看| 亚洲韩国精品一区| 男人透女人免费视频| 欧美日韩五区| 日韩精品最新网址| www.久久国产| 五月激情综合| 97在线免费视频| 亚洲 国产 日韩 欧美| 国产一区二区三区四区五区美女 | 亚洲三区在线播放| 国产精品毛片久久久久久| av动漫在线免费观看| 国产在线天堂www网在线观看| 在线观看国产一区二区| 99国产精品免费视频| 你微笑时很美电视剧整集高清不卡 | 亚洲大片在线观看| 污污视频网站免费观看| 九九九九九九精品任你躁| 国产偷亚洲偷欧美偷精品| 国产真实乱在线更新| 亚洲一区二区毛片| 97欧洲一区二区精品免费| 飘雪影院手机免费高清版在线观看| 国产精品国产三级国产a| 欧美不卡在线播放| а天堂中文最新一区二区三区| 日韩av网站导航| 午夜免费激情视频| 老牛影视一区二区三区| 国产精品精品软件视频| 日韩在线免费电影| 一本大道久久a久久综合婷婷| 伊人av在线播放| 久久综合成人| 国产成人福利视频| 三级网站在线看| 一区二区三区日韩在线观看| 国产又大又黄又粗的视频| 欧美18免费视频| 欧美成人精品激情在线观看 | 草视频在线观看| 奇米影视一区二区三区| 欧美日韩一区二区三区在线视频| 国产蜜臀一区二区打屁股调教| 欧美男男青年gay1069videost| 老司机福利av| 久久av在线| 久久国产精品-国产精品| 欧美xxxx免费虐| 日韩一级片在线观看| 91免费公开视频| 美国三级日本三级久久99| 欧美精品一区二区三区四区五区| aa视频在线观看| 欧美xxxx在线观看| 欧美国产在线看| 韩国精品免费视频| 国产日本欧美在线| 羞羞视频在线观看一区二区| 日韩在线免费视频观看| 伊人免费在线观看高清版| 欧美极品少妇xxxxⅹ高跟鞋| 成年人免费在线播放| 午夜精品福利影院| 欧美整片在线观看| 日本免费一区二区三区最新| 日韩欧美亚洲成人| 成年人在线观看av| 久久亚洲一区| 日韩欧美视频一区二区三区四区| 国产精品扒开腿做爽爽爽视频软件| 亚洲免费视频观看| 无码人妻久久一区二区三区| 久久精品这里都是精品| 精品免费国产一区二区| 国内精品久久久久久久影视简单| 国产精品成人播放| av在线1区2区| 91精品久久久久久久91蜜桃 | 欧美日韩在线免费观看| 免费中文字幕av| 久久蜜桃资源一区二区老牛| 亚洲精美视频| 国色天香久久精品国产一区| 久久久之久亚州精品露出| 香蕉视频911| 在线这里只有精品| 男人的午夜天堂| 国产成人亚洲综合a∨猫咪| 九九爱精品视频| 久久99免费视频| 国产精品视频网| 天堂av中文在线| 日韩激情av在线播放| 久操视频在线免费观看| 亚洲三级免费电影| 欧美夫妇交换xxx| 久久精品三级| 中文字幕乱码一区二区三区| 成人性生交大片免费看96| 91精品国产色综合久久不卡98| 国产福利小视频在线| 日韩视频免费直播| 中文字幕精品无码一区二区| 中文字幕在线观看不卡| 91丨porny丨对白| 日韩高清国产一区在线| 国产人妻人伦精品| 五月激激激综合网色播| 国产日韩欧美另类| 激情黄产视频在线免费观看| 色噜噜狠狠狠综合曰曰曰88av| 亚洲第一页综合| 欧美亚洲禁片免费| 久久综合色综合| 国产精品久久久久三级| 亚洲欧美日韩偷拍| 激情伊人五月天久久综合| 日本人体一区二区| 久久婷婷蜜乳一本欲蜜臀| 久久国产精品一区二区三区四区 | 好吊妞www.84com只有这里才有精品| free欧美| 性色av一区二区三区在线观看| 在线免费看黄| 亚洲精品一区二区三区婷婷月| av官网在线观看| 在线观看免费视频综合| 国产性xxxx高清| 亚洲你懂的在线视频| 免费看黄色三级| 99视频精品在线| 在线观看一区二区三区视频| 麻豆91在线看| 男女曰b免费视频| 一本色道88久久加勒比精品| 欧美另类videos| 日韩精品一区二区久久| 久久久久久欧美精品色一二三四| 麻豆国产一区二区三区四区| 国产美女精品视频| 欧美黑人疯狂性受xxxxx野外| 久久人人爽人人爽人人片av高请 | 午夜久久久影院| 欧美片一区二区| 国产精品白丝在线| 林心如三级全黄裸体| 国产午夜精品在线观看| 亚洲午夜久久久久久久久红桃| 成人av一区二区三区| 亚洲av综合色区无码另类小说| 国产一区二区三区精品视频| 最新天堂在线视频| 美女尤物国产一区| 欧美黑人又粗又大又爽免费| 美女国产一区| 欧美国产日韩在线播放| 老司机一区二区三区| 亚洲 高清 成人 动漫| 亚洲国产欧美国产综合一区| 激情五月婷婷六月| 国产精品a级| 日本中文字幕在线视频观看| 韩国精品一区二区三区| 久久久久久av无码免费网站下载| 欧美xxx在线观看| 少妇高潮大叫好爽喷水| 午夜国产精品视频| 99在线免费视频观看| 自拍视频亚洲| 97超碰国产精品| 在线亚洲观看| 无人在线观看的免费高清视频 | 亚洲成人一区| 久久久成人精品一区二区三区| 国产精品久久久久久久免费观看| 伊人天天久久大香线蕉av色| 欧美va久久久噜噜噜久久| 亚洲一区二区三区精品视频| 天天做天天爱天天爽综合网| 最新av在线免费观看| 午夜视频精品| 国产黄色一级网站| 日韩国产一区二| 久热在线视频观看| 国产激情视频一区二区在线观看 | 网曝91综合精品门事件在线| 欧美日韩在线高清| 日韩一区二区三区免费播放| 中国 免费 av| 在线成人www免费观看视频| 18禁免费无码无遮挡不卡网站| 日韩中文字幕区一区有砖一区| 色国产在线视频| 成人免费的视频| 在线观看福利片| 综合婷婷亚洲小说| 日本网站在线播放| 欧美三级视频在线| 好吊色一区二区| 国产亚洲a∨片在线观看| 久热国产在线| 欧美一区二三区| 欧美一级做a| 精品亚洲第一| 欧美激情欧美| 日韩av一二三四区| 国产一区视频网站| 人妻少妇精品视频一区二区三区| 国产精品护士白丝一区av| 精品视频在线观看免费| 欧美亚男人的天堂| 免费看国产片在线观看| 在线播放日韩欧美| www.综合网.com| 国产一区私人高清影院| 精品精品国产毛片在线看| 曰韩不卡视频| 噜噜噜久久亚洲精品国产品小说| 三区视频在线观看| 久久综合丝袜日本网| 四虎免费在线视频| 欧美色区777第一页| 深爱五月激情五月| 久久久精品免费| 99久久精品一区二区成人| 极品校花啪啪激情久久| 91精品国产91久久久久久密臀| 精品一区二区中文字幕| 国产成人av福利| 在线观看美女av| 欧美自拍偷拍一区| 亚洲人成色777777老人头| 精品自拍视频在线观看| 色综合.com| 日本中文不卡| 免费看黄裸体一级大秀欧美| 免费啪视频在线观看| 中文字幕一区二区在线观看| 天堂免费在线视频| 亚洲免费视频在线观看| √8天堂资源地址中文在线| 亚洲曰本av电影| 99精品在线免费在线观看| 爱情岛论坛vip永久入口| 91色.com| 青青草av在线播放| 精品国产不卡一区二区三区| www免费视频观看在线| 国产在线日韩在线| 色偷偷综合网| 亚洲精品午夜在线观看| 中文av一区二区| 国产精品sm调教免费专区| 亚洲天堂免费视频| 欧美电影免费观看| 日韩欧美在线观看强乱免费| 另类av一区二区| 精品无码一区二区三区| 色综合天天做天天爱| 久久免费看视频| 国产91网红主播在线观看| 国产精品一区2区3区| 虎白女粉嫩尤物福利视频| 久久色.com| 成人毛片一区二区三区| 国产一区二区三区在线看| av成人在线播放| 一区二区三区四区不卡| 精品亚洲国内自在自线福利| 欧美黑人猛猛猛| 亚洲成年网站在线观看| 成人在线黄色电影| 欧洲精品在线一区| 毛片av中文字幕一区二区| 婷婷激情四射网| 欧美tickling挠脚心丨vk| а√天堂资源官网在线资源| 久草一区二区| 日本在线不卡一区| 韩国一级黄色录像| 日韩欧美国产wwwww| 国产精品13p| 日韩福利二区| 国产自产2019最新不卡| 国产真实乱人偷精品视频| 日韩大陆欧美高清视频区| 日韩精品免费观看视频| 麻豆视频传媒入口| 91性感美女视频| 中文字幕乱码人妻无码久久| 久久艹在线视频| 秋霞影院一区二区三区| 少妇激情一区二区三区| 亚洲欧美另类小说| 亚州精品国产精品乱码不99按摩| 国产精品久久久久一区二区| 中文字幕一区二区精品区| 中文字幕视频观看| 色中色一区二区| 成人短视频在线| 久久久精彩视频| 九九视频精品免费| 日本五十路女优| 色偷偷噜噜噜亚洲男人| www.爱久久| 亚洲精品一二三四五区| 亚洲综合在线第一页| 天堂a中文在线| 成人性生交大片免费看视频直播 | 一区二区影院| 久久久久久久久久久国产精品| 欧美精品亚洲二区| 在线视频超级| 中文字幕色呦呦| 国产欧美日韩中文久久| 亚洲精品国产精品国| 国产精品久久激情| 亚洲精品1234| 成年人一级黄色片| 一本色道久久88综合亚洲精品ⅰ|