我正在使用 Docker,并且我有一个包含 PHP、MySQL、Apache 和 Redis 的堆栈。我现在需要添加 MongoDB,所以我正在检查 Dockerfile 的最新版本以及来自 MongoDB Dockerhub 的 docker-entrypoint.sh 文件,但我找不到设置默认数据库、管理员用户/密码和可能的身份验证的方法来自 docker-compose.yml
文件的容器的方法。
在 MySQL 中,您可以设置一些 ENV 变量,例如:
db:
image: mysql:5.7
env_file: .env
environment:
MYSQL_ROOT_PASSWORD: ${MYSQL_ROOT_PASSWORD}
MYSQL_DATABASE: ${MYSQL_DATABASE}
MYSQL_USER: ${MYSQL_USER}
MYSQL_PASSWORD: ${MYSQL_PASSWORD}
这会将数据库和用户/密码设置为 root
密码。
有没有办法用 MongoDB 实现同样的目标?任何人都有一些经验或解决方法?
原文由 ReynierPM 发布,翻译遵循 CC BY-SA 4.0 许可协议
当
/data/db
目录中没有任何内容时,docker hubmongo
图像将运行/docker-entrypoint-initdb.d/
中的任何脚本。数据库初始化
The
mongo
container image provides the/docker-entrypoint-initdb.d/
path to deploy custom.js
or.sh
setup scripts that will be run once on database initialisation..js
默认情况下,脚本将针对test
或MONGO_INITDB_DATABASE
如果在环境中定义。或者
一个简单的初始化 mongo shell javascript 文件,演示设置
container
收集数据、日志记录以及如何退出错误(用于结果检查)。管理员用户设置
控制“root”用户设置的环境变量是
MONGO_INITDB_ROOT_USERNAME
MONGO_INITDB_ROOT_PASSWORD
例子
或
Dockerfile
您不需要在命令行上使用
--auth
作为entrypoint.sh
脚本在检测到环境变量存在时添加它。