简介
在做项目需要用到mongodb来存储设备的心跳日志,因为其他组件都是用的docker部署,所以mongodb也使用docker单机部署。部署过程很简单,但是使用的时候总是提醒心跳库使用的用户名密码校验失败,因为mongodb需要开启登陆验证,但是初始化过程中并没有创建初始的数据库,以及数据库归属的用户和密码,需要解决部署过程中初始化mongodb数据的问题。
部署
安装docker-compose
docker-compose安装非常简单,下载docker-compose,拷贝到/usr/bin即可。
编写yaml文件
// 编写mongodb安装的yaml文件
version: '2'
services:
mongo-db:
image: mongo:latest
container_name: mongo-db
build: ./
restart: always
ports:
- 27017:27017
environment:
- MONGO_INITDB_DATABASE=你需要访问的数据库
- MONGO_INITDB_ROOT_USERNAME=数据库用户名
- MONGO_INITDB_ROOT_PASSWORD=数据库密码
volumes:
- 初始化脚本目录/initdb.js:/docker-entrypoint-initdb.d/initdb.js:ro
- mongodb数据目录:/data/db
- /etc/localtime:/etc/localtime
logging:
driver: "json-file"
options:
max-size: "200k"
max-file: "10"
mongo-express:
image: mongo-express:latest
container_name: mongo-express
restart: always
links:
- mongo-db:mongodb
depends_on:
- mongo-db
ports:
- 27018:8081
environment:
ME_CONFIG_OPTIONS_EDITORTHEME: 3024-night
ME_CONFIG_MONGODB_SERVER: mongodb
ME_CONFIG_MONGODB_ADMINUSERNAME: mongodb用户名
ME_CONFIG_MONGODB_ADMINPASSWORD: mongodb密码
ME_CONFIG_BASICAUTH_USERNAME: 登陆用户名
ME_CONFIG_BASICAUTH_PASSWORD: 登陆密码
初始化数据的脚本
// 初始化脚本
db = db.getSiblingDB('你需要创建的数据库');
db.createUser(
{
user: "用户名",
pwd: "密码",
roles: [
{ role: "dbOwner", db: "数据库"}
]
}
);
db.createCollection("newCollection");
部署
// docker-compose部署mongodb
docker-compose -f yaml所在文件夹/mongdb-service.yaml up -d