MongoDB docker--初始化脚本无法创建用户

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

在我的项目中,我使用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
      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