でMongoのコンテナを作成し、私は作曲で作成されているのmongoコンテナを持っています。ドッキングウィンドウ-構成するユーザー名とパスワード
version: '2'
volumes:
mongodata:
driver: local
services:
mongo:
image: mongo:latest
hostname: ${MONGODB_HOST}
restart: always
ports:
- "27017:27017"
volumes:
- mongodata:/data/db
これは完璧に動作しますが、しかし今私はデータベースにパスワードを付けたいです。これを行うには、まず私が理解しているように、データベースを作成し、パスワードを追加してから、--auth
フラグでそれを再起動する必要があります。私の質問は、ドッカーの作成でこのプロセスを実行する方法です。
ドッカーの作成なしですべてを行うと、これを行うことができます。作成時に発生する問題は、
です。a)ドッカーの作成は、ドッカーネットワーク内で動作します。 b)docker-composeは、生産中に最初とは異なるコマンドを実行することはできません。 - これは重要です。最初に--auth
を実行して初めてパスワードを設定することができると言う人もいますが、これは当てはまりません。 、
# start the temporary container
docker run -d -v /tmp/mongodb --name tmpdb -e MONGODB_DBNAME=db_test mongo --auth
# do the user creation
docker run -it --link tmpdb --rm mongo sh -c 'mongo --host tmpdb --eval "db.createUser({ user: \"admin\", pwd: \"password\", roles: [ { role: \"root\", db: \"admin\" } ] });"'
# stop the server
docker stop tmpdb
# create new mongodb container, using the old ones data
docker run -d -p 27017:27017 --name mongo2 -e MONGODB_DBNAME=db_test mongo --auth
# clean up old container (we are using the volumes so they will stick around)
docker rm tmpdb
このファイルは、一時的なコンテナを作成し、その上にユーザ名/パスワードを設定します:私が働き始めた
一つの解決策は、私がドッキングウィンドウ-COMPOSEファイルを実行する前に、すべての私のサーバー上で実行されますシェルスクリプトでした元のコンテナを停止し、古いコンテナを使用して新しいコンテナを作成し、元のコンテナを削除します。新しいmongoコンテナにパスワードが設定されました。
私の最終的な質問は、これをドッカーで作成する最良の方法は何ですか? :
私のドッキングウィンドウ・コンファイルで私の他のコンテナがモンゴにアクセスできるようにする必要がありますので、私はMongoのデータを保持するボリューム・コンテナがドッキングウィンドウ-COMPOSEは