sql >> データベース >  >> NoSQL >> MongoDB

docker-mongodbへのJavaアプリケーション接続を作成します

    2019年7月、Dockerの公式ドキュメント:

    出典: https://docs.docker.com/compose/compose-file/ #links

    解決策#1:開始前の環境ファイル

    基本的に、すべての構成を環境変数を使用してファイルに一元化します。 docker-compose upの前に実行します

    次のアプローチは、これらのシナリオで私を助けました:

    • docker-compose.ymlには、複雑な依存関係を持つ複数のコンテナーがあります
    • docker-composeの一部のサービスは、同じマシンの別のプロセスに接続する必要があります。このプロセスは、Dockerコンテナである場合とそうでない場合があります。
    • ホスト、パスワードなど、複数のdocker-composeファイル間で変数を共有する必要があります

    手順

    1.- 1つのファイルを作成して構成を一元化します

    このファイルには、 / env / company_environmentsという名前を付けることができます。 拡張子があるかどうか。

    export MACHINE_HOST=$(hostname -I | awk '{print $1}')
    export GLOBAL_LOG_PATH=/my/org/log
    export MONGO_PASSWORD=mypass
    export MY_TOKEN=123456
    

    2.- docker-compose.yml

    でenv変数を使用します

    コンテナA

    app_who_needs_mongo:
      environment:
        - MONGO_HOST=$MACHINE_HOST
        - MONGO_PASSWORD=$MONGO_PASSWORD
        - TOKEN=$MY_TOKEN
        - LOG_PATH=$GLOBAL_LOG_PATH/app1
    

    コンテナB

    app_who_needs_another_db_in_same_host:
      environment:
        - POSTGRESS_HOST=$MACHINE_HOST
        - LOG_PATH=$GLOBAL_LOG_PATH/app1
    

    3.- コンテナを起動します

    docker-composeコマンドの前にソースを追加するだけです:

    source /env/company_environments
    docker-compose up -d
    

    ソリューション#2:host.docker.internal

    https://stackoverflow.com/a/63207679/3957754

    基本的に、 host.docker.internalが含まれるDockerの機能を使用します。 docker-composeが複数のコンテナーを開始したサーバーのIPとして使用できます



    1. MongoLab認証失敗エラーに接続できません

    2. Mongodb find()クエリ:一意の値のみを返します(重複はありません)

    3. 何百万ものレコードがある場合、Mongoのカウントは非常に遅くなります

    4. マングースで2つのフィールドを並べ替える方法は?