精品欧美一区二区三区在线观看 _久久久久国色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技術棧公眾號

天天操天天干天天干| 日本少妇xxxxx| 成人观看网址| 久久精品一区二区三区四区| 国产日韩av在线| 久久久99精品| 免费av一区二区三区四区| 欧美日韩免费不卡视频一区二区三区| 一本二本三本亚洲码| 日韩在线视频免费| 蜜桃一区二区三区在线观看| 久久99精品久久久久久琪琪 | 英国三级经典在线观看| 国产精品久久福利| 蜜桃臀一区二区三区| 国产精品福利电影| 美女尤物久久精品| 欧美精品手机在线| 欧美成人另类视频| 女同久久另类99精品国产| 在线成人免费观看| 亚洲精品乱码久久久久久自慰| av毛片在线免费| 国产三级欧美三级日产三级99| 国产91视觉| 91精品国产乱码久久久| 国产欧美日韩亚洲一区二区三区| 精品国产美女在线| 国产在线观看无码免费视频| 欧美视频二区欧美影视| 欧美在线视频你懂得| 波多野结衣综合网| 尤物yw193can在线观看| 国产精品久久久久影院色老大 | 国产精品久久久久久久电影| 偷偷操不一样的久久| 韩国久久久久| 色综合久综合久久综合久鬼88| 亚洲天堂岛国片| 久草在线成人| 亚洲精品一区二区在线| 精品国产乱码久久久久夜深人妻| 国产精品日韩精品在线播放| 欧美视频一区二区三区在线观看 | 亚洲欧美三级在线| 国产精品伦子伦| 国产一区在线电影| 精品免费视频.| 成人啪啪18免费游戏链接| 久久国际精品| 欧美一级久久久久久久大片| 亚洲精品第三页| 亚洲精品aa| 欧美日韩国产一二三| 182午夜在线观看| 在线日韩三级| 欧美一激情一区二区三区| 污免费在线观看| 国产一区二区三区免费在线| 91精品国产aⅴ一区二区| 91亚洲一区二区| 欧美高清hd| 精品国产一二三区| 黄色av网址在线观看| 欧美日韩一区二区三区在线电影 | 欧洲精品在线观看| 亚洲欧美自拍另类日韩| 99视频这里有精品| 日韩免费高清av| 国产麻豆剧传媒精品国产av| 日韩精选在线| 国产午夜精品免费一区二区三区 | 国产伦精品一区二区三区妓女下载| 视频欧美精品| 日韩免费视频线观看| 理论片大全免费理伦片| 亚洲欧洲av| 日韩一中文字幕| 久草视频免费在线| 欧美亚洲一级| 成人午夜两性视频| 日本免费一区视频| 国产欧美日韩卡一| 日本一本草久p| 91破解版在线观看| 91官网在线免费观看| 一区二区久久精品| 免费观看成人www动漫视频| 在线成人免费网站| 欧美日韩国产精品一区二区三区| 99精品国产99久久久久久福利| 日韩美女视频中文字幕| 国产免费视频一区二区三区| 99在线精品视频| 亚洲精品在线免费看| 青青草视频在线免费直播| 一本大道久久a久久综合婷婷| www.cao超碰| 美女网站色精品尤物极品姐弟| 国产亚洲欧美一区| 国产亚洲精品码| 免费成人你懂的| 精品视频高清无人区区二区三区| 中国日本在线视频中文字幕| 午夜成人免费电影| 爱豆国产剧免费观看大全剧苏畅 | 久久青草视频| 亚洲精品电影网| 欧洲第一无人区观看| 亚洲综合国产| 国产高清自拍一区| 欧美69xxxx| 色狠狠桃花综合| 精品伦一区二区三区| 日韩一区亚洲二区| 欧美专区第一页| 亚洲男人天堂久久| 亚洲四区在线观看| 亚洲高清在线免费观看| 欧美日韩看看2015永久免费 | 亚洲欧洲午夜一线一品| 国产亚洲精品久久久久久打不开 | 亚洲精品乱码久久久久久蜜桃麻豆| 国产精品亚洲精品| 久久视频www| 图片区小说区区亚洲影院| aaaaaaaa毛片| 天天操综合网| 成人激情电影一区二区| 91欧美在线视频| 欧美性猛交xxxx免费看漫画| 男人网站在线观看| 黄色亚洲精品| 超碰97国产在线| 黄色精品在线观看| 欧美精品高清视频| 亚洲人与黑人屁股眼交| 日本午夜精品视频在线观看| 欧美专区一二三 | 亚洲激情网址| 国产精品污www一区二区三区| 91最新在线视频| 91精品国产综合久久小美女| 啪啪一区二区三区| 蜜臀av在线播放一区二区三区| 日本日本精品二区免费| 欧美电影免费观看网站| 日韩精品免费综合视频在线播放| 日本系列第一页| 成人精品小蝌蚪| 18禁网站免费无遮挡无码中文| 亚洲国产精品免费视频| 色综合久久久888| 国精品人妻无码一区二区三区喝尿| 亚洲日本成人在线观看| 四虎国产精品永久免费观看视频| 性欧美69xoxoxoxo| 波多野结衣久草一区| av午夜在线观看| 亚洲国产中文字幕在线观看| 日韩精品在线观看免费| 国产色产综合产在线视频| 国产精品视频分类| 亚洲人metart人体| 国产精品成人观看视频免费| 55av亚洲| 尤物九九久久国产精品的分类| 伊人网视频在线| 中文字幕一区二区三区四区| 女人扒开腿免费视频app| 亚洲国内欧美| 久久亚洲免费| 久久精品国产精品亚洲毛片| 日韩在线观看免费av| www.香蕉视频| 欧美视频在线观看免费| 日韩一级片在线免费观看| 麻豆成人综合网| 亚洲色欲久久久综合网东京热| 精品av导航| 国产精品久久久久久久电影| 97影院秋霞午夜在线观看| 日韩成人激情视频| 在线观看免费中文字幕| 亚洲资源在线观看| 日韩丰满少妇无码内射| 精彩视频一区二区三区| 欧美国产亚洲一区| 色喇叭免费久久综合网| 福利视频一区二区三区| 日本在线中文字幕一区二区三区| 久久人人爽人人爽人人片亚洲| 亚洲免费成人在线| 欧洲一区二区三区在线| 久久亚洲精品大全| 久久久久久久综合狠狠综合| 一级黄色大片儿| 亚洲一区激情| 亚洲色图都市激情| 久久99久久人婷婷精品综合| 亚洲www在线观看| 韩日成人影院| 欧美日韩成人精品| 最新国产在线观看| 亚洲精品美女久久久久| 亚洲综合精品视频| 岛国av午夜精品| 欧美日韩免费做爰视频| 日本一区二区三区在线不卡| 年下总裁被打光屁股sp | 国产精品a久久久久| 日韩在线电影一区| 日韩影视高清在线观看| 亚洲www在线| 国产成人精选| 日韩暖暖在线视频| aa国产成人| 免费av在线一区| av资源网站在线观看| 亚洲高清av在线| 国产三级伦理片| 欧美视频日韩视频在线观看| 国产精品久久久免费视频| 一区二区理论电影在线观看| 老司机福利在线观看| www激情久久| 老熟妇精品一区二区三区| 国产黄色91视频| 一级网站在线观看| 精品一区二区综合| www.99av.com| 日韩中文字幕91| 国产一区二区三区精彩视频 | 亚洲第一福利专区| 精品日本一区二区三区| 成人在线视频你懂的| 亚洲综合一区二区不卡| 亚洲综合资源| 国产一区二区色| 欧美a视频在线| 国产精品老女人视频| 三上悠亚一区二区| 日韩免费观看视频| 久久久一本精品| 国产精品福利小视频| 日本一道高清亚洲日美韩| 91a在线视频| 天堂а√在线最新版中文在线| 欧美另类极品videosbest最新版本 | 99久久伊人精品| 丰满人妻一区二区三区免费视频棣| 狠狠色2019综合网| 国产chinesehd精品露脸| 国产精品69毛片高清亚洲| 潘金莲一级淫片aaaaa| 成人午夜视频在线| 日韩 中文字幕| 久久久久久久国产精品影院| 国产在线观看h| 久久先锋影音av鲁色资源网| 人妻一区二区视频| 中文字幕乱码一区二区免费| 免费成年人视频在线观看| 亚洲激情图片qvod| 日本熟妇成熟毛茸茸| 黑人巨大精品欧美一区二区免费| 精品久久久久久久久久久国产字幕| 欧洲一区在线电影| 国产一区二区小视频| 日韩欧美亚洲国产另类| 日韩一级片免费看| 在线成人一区二区| 污污片在线免费视频| 欧美一级高清免费播放| 天堂久久午夜av| 18成人在线| 欧美变态网站| 无码免费一区二区三区免费播放 | 亚洲五月六月丁香激情| caoporn国产| 欧美日韩国产大片| 亚洲av无码一区二区三区dv| 日韩电影中文字幕在线| av天在线观看| 久久久亚洲精品视频| 九九热线视频只有这里最精品| 成人黄色av网站| 欧美激情久久久久久久久久久| 亚洲va久久久噜噜噜久久狠狠 | 日韩毛片在线免费看| 精品一二三四区| 在线免费观看污视频| 国产精品久线观看视频| 日本三级欧美三级| 欧美日韩综合一区| 三级视频在线看| www.亚洲成人| 交100部在线观看| 92裸体在线视频网站| 日韩av三区| 日韩中文字幕在线不卡| 日韩综合在线视频| 男女性杂交内射妇女bbwxz| 国产精品福利av| 伊人手机在线视频| 日韩三区在线观看| 在线a人片免费观看视频| 98视频在线噜噜噜国产| 国产欧美日韩电影| 日韩国产美国| 亚洲一区二区三区四区五区午夜 | 风流少妇一区二区三区91| 在线观看欧美日韩| 国产传媒av在线| 亚洲自拍偷拍福利| 成人毛片在线| 成人在线看视频| 99精品国产视频| 欧美三级 欧美一级| 欧美日韩一卡二卡三卡| 久青青在线观看视频国产| 国内免费久久久久久久久久久| 亚洲最大的免费视频网站| 亚洲精品一区二区三区av| 久久三级福利| 97超碰在线免费观看| 午夜亚洲福利老司机| 亚洲av无码国产综合专区| 久久精品色欧美aⅴ一区二区| 欧美日韩精品一区二区三区视频| 久久久综合香蕉尹人综合网| 韩日精品在线| 国产大尺度视频| 亚洲综合色自拍一区| 国产亲伦免费视频播放| 日韩亚洲综合在线| 伦一区二区三区中文字幕v亚洲| 日本电影一区二区三区| 美女黄网久久| 爱爱的免费视频| 色呦呦日韩精品| 国产主播福利在线| 日韩免费高清在线观看| 精品欧美激情在线观看| 波多野结衣天堂| 日本一区二区三区在线观看| 亚洲午夜无码久久久久| 中文字幕亚洲天堂| 精品国产美女a久久9999| 亚洲一区三区电影在线观看| 蜜桃久久精品一区二区| 蜜桃av免费观看| 91麻豆精品91久久久久同性| 国产精品剧情| 97碰碰视频| 亚洲精品在线二区| 国产精品jizz| 91激情五月电影| freemovies性欧美| 成人午夜一级二级三级| 欧美黄在线观看| 日韩黄色一区二区| 欧美日韩一区二区精品| 国产在线网站| 国产日韩欧美自拍| 国产一区二区三区四区三区四| 无码人妻一区二区三区在线| 天天综合日日夜夜精品| 久草在现在线| 成人欧美在线观看| 极品av少妇一区二区| 国产福利短视频| 欧美日韩一级片在线观看| 亚洲无线看天堂av| 鲁丝片一区二区三区| 另类小说视频一区二区| 免费三片在线播放| 亚洲精品有码在线| 日韩三区四区| 亚洲精品久久久久久久蜜桃臀| 久久综合成人精品亚洲另类欧美| 中文字幕观看在线| 色综合91久久精品中文字幕 | 中国成人亚色综合网站| 国产成人在线视频网址| 久久久久99精品成人片我成大片 | 9765激情中文在线| 日日夜夜精品网站| 国产精品一区不卡| 久草视频一区二区| 欧美日本精品在线| 精品视频日韩| 一级黄色免费视频| 欧美日韩成人一区| 国产高潮在线| 手机成人av在线| 91在线精品一区二区| 国产黄频在线观看| 国产成人精品综合久久久| 黄色日韩在线|