[解決済み] MongoDBコンテナの起動時にDBを作成するには?
質問
私はDockerで作業しており、PHP、MySQL、Apache、Redisでスタックを持っています。私は今MongoDBを追加する必要があるので、私はそれをチェックしていました。
Dockerfile
をチェックして、最新版と
にある docker-entrypoint.sh
ファイルから
MongoDB Dockerhub
というファイルがありますが、コンテナのデフォルトの DB、管理者ユーザー/パスワード、認証方法を設定する方法が見つかりませんでした。
docker-compose.yml
ファイルからコンテナのデフォルトDBと管理者ユーザー/パスワード、そしておそらく認証方法を設定する方法を見つけることができませんでした。
MySQLでは、例えば、いくつかのENV変数を設定することができます。
db:
image: mysql:5.7
env_file: .env
environment:
MYSQL_ROOT_PASSWORD: ${MYSQL_ROOT_PASSWORD}
MYSQL_DATABASE: ${MYSQL_DATABASE}
MYSQL_USER: ${MYSQL_USER}
MYSQL_PASSWORD: ${MYSQL_PASSWORD}
そして、これでDBの設定とユーザー/パスワードが
root
のパスワードに設定します。
MongoDBで同じことを実現する方法はないのでしょうか?どなたか経験や回避策をお持ちの方はいらっしゃいませんか?
どのように解決するのですか?
ドッカーハブ
mongo
にあるスクリプトを実行します。
/docker-entrypoint-initdb.d/
に何も入力されていないときは
/data/db
ディレクトリに何も入力されていないときです。
データベースの初期化
この
mongo
コンテナイメージは
/docker-entrypoint-initdb.d/
をデプロイするためのパスです。
.js
または
.sh
データベースの初期化時に一度だけ実行されるスクリプトを設定します。
.js
スクリプトは
test
に対して実行されます。
MONGO_INITDB_DATABASE
で定義されている場合は
COPY mysetup.sh /docker-entrypoint-initdb.d/
または
COPY mysetup.js /docker-entrypoint-initdb.d/
簡単な初期化
mongo シェル javascript
ファイルでは
container
コレクションの設定、ログの記録、そしてエラー時の終了方法 (結果チェック用) を示すファイルです。
let error = true
let res = [
db.container.drop(),
db.container.createIndex({ myfield: 1 }, { unique: true }),
db.container.createIndex({ thatfield: 1 }),
db.container.createIndex({ thatfield: 1 }),
db.container.insert({ myfield: 'hello', thatfield: 'testing' }),
db.container.insert({ myfield: 'hello2', thatfield: 'testing' }),
db.container.insert({ myfield: 'hello3', thatfield: 'testing' }),
db.container.insert({ myfield: 'hello3', thatfield: 'testing' })
]
printjson(res)
if (error) {
print('Error, exiting')
quit(1)
}
管理者ユーザー設定
root ユーザーの設定を制御するための環境変数は次のとおりです。
-
MONGO_INITDB_ROOT_USERNAME
-
MONGO_INITDB_ROOT_PASSWORD
例
docker run -d \
-e MONGO_INITDB_ROOT_USERNAME=admin \
-e MONGO_INITDB_ROOT_PASSWORD=password \
mongod
または
Dockerfile
FROM docker.io/mongo
ENV MONGO_INITDB_ROOT_USERNAME admin
ENV MONGO_INITDB_ROOT_PASSWORD password
を使用する必要はありません。
--auth
をコマンドライン上で使用する必要はありません。
entrypoint.sh
スクリプトは環境変数が存在することを検出するとこれを追加します。
関連
-
[解決済み】MongoError: 最初の接続でサーバー [localhost:27017] への接続に失敗しました。
-
[解決済み] MongoDB: 1つのコマンドで複数のドキュメントを更新するには?
-
[解決済み] Dockerコンテナの中から、マシンのローカルホストに接続するにはどうすればよいですか?
-
[解決済み] Docker Dockerコンテナからホストへのファイルコピー
-
[解決済み] ホストからDockerコンテナにファイルをコピーする方法は?
-
[解決済み] リポジトリを使用せずに、あるホストから別のホストにDockerイメージをコピーする方法
-
[解決済み] MongoDBに "like "を使ってクエリを実行する方法
-
[解決済み】Dockerは仮想マシンとどう違うの?
-
[解決済み】MongoDB: 1つのフィールドですべてのドキュメントを更新する
-
[解決済み] Dockerのenvファイルに相当するKubernetesの機能
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み】SocketException: アドレスはすでに使用中です。
-
[解決済み] E: mongodb-org パッケージが見つかりません。
-
[解決済み] MongoDB の重複レコードを検索する
-
[解決済み] Mongodb: ensureIndex をいつ呼び出すか?
-
[解決済み] mongodb シェルでドキュメントの値を印刷する
-
[解決済み] ストア enum MongoDB
-
[解決済み】Docker ComposeはYを起動する前にコンテナXを待ちます。
-
[解決済み】データベースとしてのNoSQL(MongoDB) vs Lucene(またはSolr)【クローズド
-
[解決済み】MongoDBのすべてのドキュメントのフィールド名を変更するにはどうすればよいですか?
-
[解決済み] 値が NULL ではないマングースクエリ