
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
イメージ内の 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"