Techioz Blog

Docker、2 つのコンテナを接続する方法 [複製]

概要

mongoDBに接続するRubyスクリプトを作成したので、スクリプトとデータベースをDocker化して接続したいと考えています。 mongo を dockerize し、dockerfile を通じてスクリプト イメージを作成します。しかし、docker run my_ruby_scriptを起動すると、データベースとの接続がエラーで失敗しました:「WARN – : MONGODB |ERROR check 127.0.0.1:27017: Mongo::Error::SocketError:Errno:ECONNREFUSED:connection requested」というエラーが発生し、mongoコンテナを起動します最初と後で、Mongo::Client.new([‘127.0.0.1:27017’]) を含む Ruby スクリプトで docker run を起動します <- (これはコードの一部です)

解決策

問題は、MongoDB コンテナーではなく実行中のコンテナーにダイレクトするループバック IP である 127.0.0.1 に接続しようとすることです。

これを修正するには、両方のコンテナがその一部であるネットワークを作成し、それを使用して MongoDB に接続する必要があります。

docker network create my-network
docker run -d --network my-network --name my-mongo mongo
docker run -d --network my-network <your_script_image>

クライアント IP は 127.0.0.1 ではなく my-mongo である必要があります。

Mongo::Client.new(['my-mongo:27017'])