2016-05-17 14 views
0

Ich versuche aus Sicherheitsgründen einen mongodb Benutzer zu erstellen. Jetzt habe ich folgendes Dockerfile:Docker mit mongo user

FROM mongo:3.3 

RUN mongo admin --eval "db.getSiblingDB('db').createUser({user: 'test', pwd: 'test'})" 

Wenn ich laufen Docker ich die folgende Fehlermeldung erhalten:

MongoDB shell version: 3.3.5 
connecting to: admin 
2016-05-17T13:31:07.821+0000 W NETWORK [thread1] Failed to connect to 127.0.0.1:27017, reason: Connection refused 
2016-05-17T13:31:07.821+0000 E QUERY [thread1] Error: couldn't connect to server 127.0.0.1:27017, connection attempt failed : 
[email protected]/mongo/shell/mongo.js:229:14 
@(connect):1:6 

exception: connect failed 
ERROR: Service 'mongodb' failed to build: The command '/bin/sh -c mongo admin --eval "db.getSiblingDB('db').createUser({user: 'test', pwd: 'test'})"' returned a non-zero code: 1 

Ich denke, das liegt daran, dass mongod ist in diesem Moment nicht läuft?

Also, wie kann ich diesen mongodb Benutzer erstellen?

+0

Macht das Sinn? Ein Benutzer ist eindeutig ein Konfigurations-Ding und mehr etwas für die Laufzeit, nein? –

+0

Sie haben Recht. Hast du eine Lösung dafür? Ich habe die .env-Datei, wo ich den Benutzer und das Passwort platzieren möchte. – Piu130

+0

@ Piu130 klingt wie der Mongo-Server ist nicht gestartet – deFreitas

Antwort

1

Dockerfile:

FROM mongo:3.3 
COPY setup.sh /setup.sh 
RUN /setup.sh 

setup.sh:

#!/bin/bash 

mongod & 

RET=1 
while [[ RET -ne 0 ]]; do 
    echo "=> Waiting for confirmation of MongoDB service startup" 
    sleep 5 
    mongo admin --eval "help" >/dev/null 2>&1 
    RET=$? 
done 

ADMINUSER=user 
ADMINPASS=pass 

echo "=> Creating an admin user in MongoDB" 
mongo admin --eval "db.createUser({user: '$ADMINUSER', pwd: '$ADMINPASS', roles:[{role:'root',db:'admin'}]});" 

mongod --shutdown 
+0

Danke :) Das Tag '3.3.0' existiert nicht in Mongo. Sie sollten '3.3' verwenden – Piu130