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

时间:2020-06-07 10:48:51

标签: mongodb docker

在我的项目中,我使用mongodb docker镜像。我希望它在启动期间为我的应用程序创建一个用户。尽管我一直在遵循SO的教程,但我还是无法成功。

我的mongo dockerfile:

FROM mongo:4.2.0-bionic
COPY mongo-init.js /docker-entrypoint-initdb.d/

我的docker撰写:

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_INITDB_DATABASE后,未创建数据库,也未创建我的用户。我试图找到一些日志,至少是我在init脚本中放入的调试消息,但是它不存在。

如何解决?

0 个答案:

没有答案