使用docker mongo创建一个新数据库并包含用户名密码(方式二)
实现目标
- mongo 数据库的管理账号: root 管理密码: root
- 新建一个mongo 数据库,数据库名: JJ
- 刚新建的数据库的账号: cms 密码: hello123456===
- mongo db 的端口号: 27017
- 以上密码 在版本控制器之外,独立出来
组织结构
1 |
. |
文件内容
docker-compose.yml
1 |
version: '3.1' |
init-mongo.sh
1 |
mongo -- "$MONGO_INITDB_DATABASE" <<EOF |
dev.env
1 |
# define env var default value. |
我的 ubuntu 里设置了系统环境变量 NODE_ENV=dev, 所以运行的时候就会取 dev.env 文件
检查配置
1 |
docker-compose config |
运行
1 |
docker-compose up |
删除
1 |
docker-compose rm -f mongo_server |
测试
可以使用 Studio 3T for mongoDB 进行连接测试
延申思考
init-mongo.sh 是mongo首次启动运行的脚本.那么如果需要初始化一些 mongo 基础数据表, 是不是不远了?
补充
配置不同场景下的环境变量
从这两中的方式中我们可以看到,docker compose 提供了足够的灵活性来让我们设置 docker-compose.yml 文件中引用的环境变量,它们的优先级如下:
- Compose file
- Shell environment variables
- Environment file
- Dockerfile
- Variable is not defined
首先,在 docker-compose.yml 文件中直接设置的值优先级是最高的。
然后是在当前 shell 中 export 的环境变量值。
接下来是在环境变量文件中定义的值。
再接下来是在 Dockerfile 中定义的值。
最后还没有找到相关的环境变量就认为该环境变量没有被定义。