(O+P)ut

アウトプット



(O+P)ut

エンジニアのアウトプット

【Docker&MongoDB】getaddrinfo ENOTFOUND GetAddrInfoReqWrap.onlookuにて接続エラー

スポンサーリンク

事象

Roket.chatコンテナをMongoDBコンテナに接続しようとするも以下メッセージでエラーになる。

/app/bundle/programs/server/node_modules/fibers/future.js:313
                                                throw(ex);
                                                ^
Error: getaddrinfo ENOTFOUND mongo
    at GetAddrInfoReqWrap.onlookup [as oncomplete] (dns.js:64:26) {
  name: 'MongoNetworkError',
  errorLabels: [ 'TransientTransactionError' ],
  [Symbol(mongoErrorContextSymbol)]: {}
}
環境情報
  • Docker Engine Version: 19.03.5
  • Rocket.Chat Version: 3.2.2
  • NodeJS Version: 12.16.1 - x64
  • MongoDB Version: 4.2.6

原因/解決策

--linkオプションにおけるエイリアス名を「mongo」にする必要がある。

具体的には以下コマンドにて事象欄に記載したエラーが出ていたが

$ docker container create --name rocketchat -p 3000:3000 --link rocketchat_db:db rocketchat/rocket.chat:latest;docker container start rocketchat;docker logs -f rocketchat

以下に変更したところエラーは解消された。

$ docker container create --name rocketchat -p 3000:3000 --link rocketchat_db:mongo rocketchat/rocket.chat:latest;docker container start rocketchat;docker logs -f rocketchat

以下、補足です。

補足

Dockerを利用してRocketchatとMongoDBの接続を実施する際はMongoDBを先に起動させます。

$ docker ps
CONTAINER ID        IMAGE                           COMMAND                  CREATED             STATUS              PORTS                    NAMES
672f22cfed75        mongo:latest                    "docker-entrypoint.s…"   7 hours ago         Up 55 seconds       27017/tcp                rocketchat_db

このMongoDBに対して接続をする際にRocket.chatのイメージの詳細を確認すると以下のような環境変数になっています。

            "Env": [
                "PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin",
                "NODE_VERSION=12.16.1",
                "NODE_ENV=production",
                "DEPLOY_METHOD=docker",
                "MONGO_URL=mongodb://mongo:27017/rocketchat",
                "HOME=/tmp",
                "PORT=3000",
                "ROOT_URL=http://localhost:3000",
                "Accounts_AvatarStorePath=/app/uploads"
            ],

MONGO_URLを今回は指定しなかったのでデフォルトである「mongo」が指定されて名前解決を試みます。
が、それの解決に失敗していたので表題のエラーになっていました。

以上、同様の事象が発生した方はImageの詳細を見てどのような環境変数が与えられているかを確認してみてください。