Проблема с точкой входа в MongoDB

Точка входа в докер MongoDB игнорирует пользовательский сценарий для создания пользователя и базы данных. Я пробовал разными способами. Вот одна из моих конфигураций.

Решение 1

docker-compose.yml (версия 1)

version: '3.2'

  services:
    erste-mongodb:
     build:
       context: .
       dockerfile: mongodb.dockerfile
     image: erste/lts:mongodb
    #environment:
    #  MONGO_INITDB_ROOT_USERNAME: "root"
    #  MONGO_INITDB_ROOT_PASSWORD: "toor"
     volumes:
       - ./data/mongo-data:/data/db
     # - ./data/mongo-init:/docker-entrypoint.d/
ports:
  - "27017:27017"

networks:
  - mynet

сети: mynet:

dockerfile

FROM mongo:latest
COPY ./data/mongo-init/mongo-init.sh /docker-entrypoint.d/

Решение 2

docker-compose.yml (версия 2)

version: '3.2'

  services:
    erste-mongodb:
     build:
       context: .
       dockerfile: mongodb.dockerfile
     image: erste/lts:mongodb
     environment:
      MONGO_INITDB_ROOT_USERNAME: "root"
      MONGO_INITDB_ROOT_PASSWORD: "toor"
     volumes:
       - ./data/mongo-data:/data/db
       - ./data/mongo-init:/docker-entrypoint.d/
ports:
  - "27017:27017"

networks:
  - mynet

сети: mynet:

dockerfile

FROM mongo:latest

Вот мой сценарий инициализации:

mongo-init.sh

#!/bin/bash

echo "Creating users..."

mongo --eval "db.createUser({user: 'revision', pwd: 'rev123',roles: [{role: 'dbOwner', db: 'ebmn_log'}]});"
mongo -u revision -p rev123 --eval "db = db.getSiblingDB('ebmn_log'); 
db.createCollection('journal')";

echo "Finishing with users"

Есть ли у кого-нибудь идеи, как запустить скрипт инициализации.

Заранее спасибо.


person Heril Muratovic    schedule 31.05.2019    source источник


Ответы (1)


Проблема заключалась в том, что я использовал ./data/mongo-init:/docker-entrypoint.d/ вместо ./data/mongo-init:/docker-entrypoint-initdb.d/.

Я изменил это, и это работает как шарм.

P.S. Вместо sh скрипта всегда лучше использовать чистый js.

person Heril Muratovic    schedule 09.06.2019