Docker部署全栈项目:二、MongoDB 镜像
一、编写启动脚本
#!/bin/bash
cur_dir=`pwd`
# 停止并删除原有容器
docker stop luokaiii-mongo
docker rm luokaiii-mongo
# docker run 运行镜像
docker run --name luokaiii-mongo \ # --name 指定运行后的容器名称
-v /${cur_dir}/data:/data/db \ # -v 挂载本地目录到容器中(也就是将容器中的数据保存到宿主机)
-p 27016:27017 \ # 将容器的27017端口映射到宿主机的27016端口
-e MONGO_INITDB_ROOT_USERNAME=mongoadmin \ # 指定mongo初始账户名称(可以在运行第一次之后,将账号密码这两条删除,以免密码泄露)
-e MONGO_INITDB_ROOT_PASSWORD=password \ # 指定mongo初始账户密码
-d mongo:4.0.12 # -d 后台运行;mongo:xx 运行的mongo版本(如果不加版本则默认为lastest)
二、运行脚本
在运行脚本前,需要先将存放数据的目录创建出来:
$ cd /home/luokaiii/images/mongo # 脚本和DB文件的存放位置
$ mkdir data # 创建存储目录
$ ./start.sh # 运行刚刚写的脚本
994e9e05bb42d1d..... # 控制台打印这种的,即表示启动成功
上述写法,不限于 Windows 还是 Linux。
但是如果 Windows 无法执行 sh 文件,请将 CMD 命令行换成 Git Bash 命令行。
三、测试
1. 浏览器访问27016端口
2. 使用 Client 工具连接
四、日志解释
# MongoDB 启动进程,端口、数据目录、版本
2019-09-23T07:19:56.012+0000 I CONTROL [initandlisten] MongoDB starting : pid=25 port=27017 dbpath=/data/db 64-bit host=abeb2ca8fece
2019-09-23T07:19:56.012+0000 I CONTROL [initandlisten] db version v4.0.12
# 插入用户成功
Successfully added user: {
"user" : "mongoadmin",
"roles" : [
{
"role" : "root",
"db" : "admin"
}
]
}
# MongoDB 显式地留给用户的身份验证
/usr/local/bin/docker-entrypoint.sh: ignoring /docker-entrypoint-initdb.d/*
# MongoDB 启动成功
MongoDB init process complete; ready for start up.
关于Linux版本如何运行,将放在Docker-Compose集中部署时一起写。
参考资料: