MongoDB docker--初始化脚本无法创建用户
在我的项目中,我使用mongodb docker映像。我希望它在启动期间为我的应用程序创建一个用户。虽然我一直在遵循来自的教程,但我没能成功 我的mongo dockerfile:MongoDB docker--初始化脚本无法创建用户,mongodb,docker,Mongodb,Docker,在我的项目中,我使用mongodb docker映像。我希望它在启动期间为我的应用程序创建一个用户。虽然我一直在遵循来自的教程,但我没能成功 我的mongo dockerfile: FROM mongo:4.2.0-bionic COPY mongo-init.js /docker-entrypoint-initdb.d/ 我的码头工人: version: '3.7' services: mongo: build: context: mongo dock
FROM mongo:4.2.0-bionic
COPY mongo-init.js /docker-entrypoint-initdb.d/
我的码头工人:
version: '3.7'
services:
mongo:
build:
context: mongo
dockerfile: Dockerfile
restart: always
environment:
MONGO_INITDB_ROOT_USERNAME: admin
MONGO_INITDB_ROOT_PASSWORD: admin
MONGO_INITDB_DATABASE: mydatabase
MONGO_APP_USERNAME: user
MONGO_APP_PASSWORD: pwd
ports:
- "27017:27017"
healthcheck:
test: ["CMD", "echo", "'db.runCommand(\"ping\").ok'", "mongo","localhost:27017/test","--quiet","1"]
interval: 10s
timeout: 10s
retries: 5
start_period: 40s
我的mongo init.js
文件:
function getEnvValue(envVar) {
let ret = run("sh", "-c", `printenv ${envVar} >/tmp/${envVar}.txt`);
if (ret != 0) throw Error(`Environment ${envVar} is not set. Aborting...`)
return cat(`/tmp/${envVar}.txt`)
}
const appUsername = getEnvValue("MONGO_APP_USERNAME");
const appPassword = getEnvValue("MONGO_APP_PASSWORD");
let error = true
let res = [
db.createUser(
{
user: appUsername,
pwd: appPassword,
roles: ["readWrite"]
},
{
w: "majority", wtimeout: 5000
}
)
]
printjson(res)
print("THIS IS TEST !!!")
if (error) {
print('Error, exiting')
quit(1)
}
我使用以下方法部署它:
docker-compose -f docker-compose.yml build --force-rm mongo
docker-compose -f docker-compose.yml up mongo
启动MONGO\u INITDB\u数据库之后,数据库不会被创建,我的用户也不会被创建。我试图找到一些日志,至少是我放在init脚本中的调试消息,但它不在那里
如何解决此问题?您确定您的脚本已经执行了吗?是否存在任何/usr/local/bin/docker-entrypoint.sh:running/docker-entrypoint initdb.d/mongo init.js
日志?是否为脚本创建了卷装载<代码>卷:-./scripts/init.mongo.js:/docker entrypoint initdb.d/init.mongo.js:ro