DAY2 安装与使用 MongoDB

DAY2 安装与使用 MongoDB

MongoDB 在社群, 非营利环境使用是免费的,而我一律推荐使用 docker 来操作,一来省掉一堆平台相容性以及安装上遇到的问题,二来大家都会是一样的起始状态,三来是弄坏了也不用担心重装麻烦之类的。所以本篇以下不会介绍到任何os独有安装方式,仅使用 docker 而已,如果对 docker 熟稔的朋友就可以直接跳过本篇了。

安装

Application 安装模式会因为各种os有所不同,这边不会一一介绍,有需要的可以直接参考官网 各个平台安装 MongoDB 方法。我要用的是以 docker 方式来启动 MongoDB。(开始前请先安装 docker)

首先直接从 docker hub 拉取最新的映像档(image)

docker pull mongo:latest

有指定的版本号或 tag 也可以去 docker hub 查看

➜  / docker pull mongo:latest
latest: Pulling from library/mongo
16ec32c2132b: Already exists
81447d2c233f: Pull complete
Digest: sha256:93ea50c5f15f9814870b3509449d327c5bc4d38f2b17c20acec528472811a723
Status: Downloaded newer image for mongo:latest
docker.io/library/mongo:latest
➜  /

这样就成功版最新的版本映像档拉回本机罗!我们还是先确认 image 是否存在

docker image ls

➜  / docker image ls
REPOSITORY               TAG            IMAGE ID       CREATED        SIZE
mongo                    latest         269b735e72cb   3 weeks ago    682MB

看到 tag 栏位,latest 毕竟是 latest,我们还是不知道是哪一个版本,如果想看拉回来的 MongoDB 是什麽版本,可以使用 dk image inspect [IMAGE ID] 来查看细节。

启动

接着看怎麽启动 MongoDB 吧!

docker run -d mongo

我们再输入 docker ps ls 来查看有哪些正在执行的 docker

➜  / docker run -d mongo
11ef37ced7a9797e9ba9bb307232ad340533f6277801203b009b2fbb6d1b3daa

➜  / dk ps
CONTAINER ID   IMAGE     COMMAND                  CREATED         STATUS        PORTS       NAMES
11ef37ced7a9   mongo     "docker-entrypoint.s…"   2 seconds ago   Up 1 second   27017/tcp   elegant_lamport
➜  /

关於这个 -d 参数千万不能漏掉,因为没加上去的话就会被占用一个 terminal 视窗,要多开一个会很麻烦(网路梗),-d 是背景执行的意思。

设定 port 与 名称

如上面 terminal 结果,实务上我们还会多给予一些设定,例如 port 与 名称,这样才能协助我们从众多 docker 执行体中找到 mongoDB。

预设的 MongoDB port 是 27017,我们把 port 号改为 27666,同时名字也改为辨识度高一点的的。

dk run -d -p 27666:27017 --name mongoTest mongo

结果

➜  / dk ps
CONTAINER ID   IMAGE     COMMAND                  CREATED         STATUS         PORTS                                           NAMES
9d48d1c66439   mongo     "docker-entrypoint.s…"   7 seconds ago   Up 5 seconds   0.0.0.0:27666->27017/tcp, :::27666->27017/tcp   mongoTest

关闭

我们使用 docker ps 指令列出目前正在执行的容器,可以透过docker stop 指令来关闭,带入的可以是 CONTAINER IDNAMES,我自己是比较喜欢用 ID,因为不用完整输入名称,只要前几码而已。

例如上面的 CONTAINER ID: 9d48d1c66439, NAMES: mongoTest,你可以用以下方式输入:

  • docker stop mongoTest
  • docker stop 9d48d1c66439
  • docker stop 9d4 (可以更少,但避免误停,还是多个几码吧)

docker-compose 出场

现在你已经会使用 docker 运作 MongoDB 了,那为什麽还需要 docker-compose?因为科技始终来自於惰性,人是很懒惰打一堆指令的,於是我们把相关设定都直接写在 yaml 内,我只要记得 docker-compose up & docker-compose down 就好了!(其实我更懒,加上 alias,只需要 dc up & dc down

首先在专案底下建立一个档案名字是 docker-compose.yml,记得名字要对,内容就照着以下打即可

version: '3'
services:
    mongoTest:
        image: mongo
        container_name: mongoTest
        ports:
            - "27666:27017"
        entrypoint: [ "/usr/bin/mongod","--bind_ip", "localhost"]

接着在路径资料夹输入 docker-compose up 就可以看到 MongoDB 启动罗!

保留容器资料

前面有提到,使用 docker 的好处是每次启动都像新的一样,我所需要使用的初始资料都会准备在一个初始用的脚本内,启动时顺手把资料写进资料库。

那如果想保留资料的话该怎麽做?
其实也很简单,在 yml 内新增 volumes 设定。完整如下:

version: '3'
services:
    mongo_test:
        image: mongo
        container_name: mongo_test
        ports:
            - "27666:27017"
        volumes:
            - "~/Desktop/mount-mongo-data:/data/db"

: 前面的路径就是实体位置,你也可以修改成你想储存的位置。
所以我是将 MongoDB 的资料储存在 ~/Desktop/mount-mongo-data 底下喔!


学会如何使用 docker 启动 MongoDB 後,接下来就是如何连线了!请期待明天吧!


本系列文章会同步发表於我个人的部落格 Pie Note


<<:  Day 02 网页和Blazor介绍

>>:  [DAY2] 适者生存下的环境

Day 8. Compare × G2 × Slate

这一篇是这一系列 Libraries 比较文实质性的最後一篇了,在下一篇稍做总结以後接着我们就要正...

SQL 的括号怎麽写成 Laravel Query?

前言 之前工作遇到一个情境需要捞出取消订单状态为 0,1 或没有取消单的订单,然後要再加上其他条件,...

从零开始学游戏设计:游戏中的背景音乐

这是 Roblox 从零开始系列,游戏环境章节的第五个单元,今天你将学会如何在游戏内播放背景音乐 【...

Outlook 2007常见问题 - 整理常被问到的案件

PST档单一档案20GB 超过或将近 , 造成开启无反应或者需时很久. 解决1:scanpst 修...

Day6 Sideproject(作品集) from 0 to 1 -定义功能

今天来介绍我们是如何从自己需要和使用者的角度来定义功能 前面有说到我们想做一个一起做sideproj...