mongodb - 使用 docker-compose 启动 mongo docker
问题描述
我的 docker 容器正在通过 docker-compose 运行。由于此日志行,init 脚本似乎正在创建我要登录的用户:
mongo | Successfully added user: { "user" : "newUser", "roles" : [ "readWrite" ] }
mongo | bye
mongo | Error saving history file: FileOpenFailed Unable to open() file /home/mongodb/.dbshell: No such file or directory
mongo | {"t":{"$date":"2021-01-29T13:45:03.397+00:00"},"s":"I", "c":"NETWORK", "id":22944, "ctx":"conn3","msg":"Connection ended","attr":{"remote":"127.0.0.1:60066","connectionId":3,"connectionCount":0}}
但是,由于我看到“无法打开文件 /home/mongodb/.dbshell”,看来我无法写入我的数据目录。知道我在这里做错了什么吗?
这是 mongo 的 docker-compose:
mongo:
image: mongo:4.4.3
container_name: mongo
restart: unless-stopped
environment:
MONGO_INITDB_ROOT_USERNAME: root
MONGO_INITDB_ROOT_PASSWORD: root1
MONGO_INITDB_DATABASE: admin
command: mongod --port 27017
ports:
- '27017:27017'
volumes:
- ./data/mongodb:/data/db
- ./configs/mongodb/mongo-init.sh:/docker-entrypoint-initdb.d/mongo-init.sh:ro
这是我的 mongo-init.sh 文件。
#!/usr/bin/env bash
set -eu
mongo -- "admin" <<EOF
var rootUser = 'root';
var rootPassword = 'root1';
var admin = db.getSiblingDB('admin');
admin.auth(rootUser, rootPassword);
var user = 'newUser';
var passwd = 'newUserPass';
db.createUser({user: user, pwd: passwd, roles: ["readWrite"]});
EOF
解决方案
我发现了问题。我的脚本中有两个地方错了。MONGO_INITDB_DATABASE 在我的 docker-compose 中不应该是管理员 - 它应该是我试图创建的数据库。mongo-init.sh 文件也应该是这样的:
mongo -- "newUserDB" <<EOF
var admin = db.getSiblingDB('admin');
admin.auth('root', 'root1');
db.createUser({user: 'newUser', pwd: 'newUserPass', roles: [{ role: "readWrite", db: "newUserDB" }]});
EOF
我注意到我的用户是在错误的数据库中创建的。上面的错误让我失望。那和本地卷的所有者是 systemd-coredump,这完全没问题,因为这只是 Mongo 在容器中使用的用户 ID 的映射。与实际的核心转储无关。少!
推荐阅读
- angular - 上下文菜单上的文件元素未定义 - 为什么?
- php - 我的表单总是告诉用户有问题
- sql - 如何提取与特定模式匹配的所有字符串并在 SQL 中爆炸为行
- algorithm - 将数组分成两部分(某些元素可以单独保留),使得两部分之和最大
- ios - 使用 LanguageManager-iOS-Lokalise0.1.3 在单击按钮上不会更改 IOS 应用程序语言
- python - 如何将从实时方法调用接收的字节 jpeg 数据转换为可读/可管理的格式
- tensorflow - 从 anaconda 安装中导入 jupyter 和 sypder 中的 tensroflow 时遇到问题
- r - 带有雨果(学术主题)的 R 博客的雨果警告:我需要做些什么吗?
- ios - Firebase 创建动态链接在本机 iOS 中不起作用。但是它似乎在android中工作正常
- react-native-android - 最近我将我的 expo-cli 更新到 3.13.1 版本,突然应用程序无法正常工作