バックエンドを MongoDB Docker コンテナに接続する方法

バックエンドを MongoDB Docker コンテナに接続する方法

docker-compose up -d私は、docker hub / mongodb に書かれているとおりにこの docker-compose ファイルを作成し、コンテナを起動するための標準的なコマンドを使用します。

# Use root/example as user/password credentials
version: '3.1'

services:

  mongo:
    image: mongo
    restart: always
    environment:
      MONGO_INITDB_ROOT_USERNAME: root
      MONGO_INITDB_ROOT_PASSWORD: example

  mongo-express:
    image: mongo-express
    restart: always
    ports:
      - 8081:8081
    environment:
      ME_CONFIG_MONGODB_ADMINUSERNAME: root
      ME_CONFIG_MONGODB_ADMINPASSWORD: example
      ME_CONFIG_MONGODB_URL: mongodb://root:example@mongo:27017/

bf4a595a508d   mongo-express   "tini -- /docker-ent…"   About an hour ago   Up About an hour   0.0.0.0:8081->8081/tcp, :::8081->8081/tcp   intake-app_mongo-express_1
b5fcc2d2386d   mongo           "docker-entrypoint.s…"   About an hour ago   Up About an hour   27017/tcp                                   intake-app_mongo_1

今、バックエンドをそれに接続しようとしています。

postresqlでは次のようになります postgresql://root:example@localhost:8081/db_name

mongo の場合はどうなるでしょうか?

PS: Web ブラウザーで http://localhost:8081 の db に接続できますが、コマンド ラインから db に接続できませんmongo

答え1

から公式Dockerハブページ:

イメージ内の MongoDB サーバーは標準の MongoDB ポート 27017 をリッスンするため、Docker ネットワーク経由で接続すると、リモート mongod に接続するのと同じになります。

どこからどのように接続するかを指定していません。別のコンテナの場合はポートを直接使用できますが、そうでない場合は最初にポートを公開する必要があります。

接続文字列は通常、公式ドキュメント:

mongo mongodb://$[ホストリスト]/$[データベース]?authSource=$[authSource] --username $[ユーザー名]

mongo-express上記の詳細を取得するために使用したコンテナ、または Docker Hub README から取得することもできます。つまり、あなたの場合:

mongodb://root:example@mongo:27017/

クライアントが同じスタック内の Docker コンテナ内にない場合は、最初のmongodbコンテナからポート 27017 を公開する必要があります。

ports:
    - "27017:27017"

関連情報