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 是背景执行的意思。
如上面 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 ID
或 NAMES
,我自己是比较喜欢用 ID,因为不用完整输入名称,只要前几码而已。
例如上面的 CONTAINER ID: 9d48d1c66439
, NAMES: mongoTest
,你可以用以下方式输入:
docker stop mongoTest
docker stop 9d48d1c66439
docker stop 9d4
(可以更少,但避免误停,还是多个几码吧)现在你已经会使用 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
这一篇是这一系列 Libraries 比较文实质性的最後一篇了,在下一篇稍做总结以後接着我们就要正...
前言 之前工作遇到一个情境需要捞出取消订单状态为 0,1 或没有取消单的订单,然後要再加上其他条件,...
这是 Roblox 从零开始系列,游戏环境章节的第五个单元,今天你将学会如何在游戏内播放背景音乐 【...
PST档单一档案20GB 超过或将近 , 造成开启无反应或者需时很久. 解决1:scanpst 修...
今天来介绍我们是如何从自己需要和使用者的角度来定义功能 前面有说到我们想做一个一起做sideproj...