2017-02-13 10 views
1

エクスプレスサーバとmongo dbとredis dbへのリンクを構築しました。
私はdocker runサーバ/ mongo/redisを別々に使用しており、サーバは正常に動作します。私はdocker-compose使用時
しかし、それはエラーnodejsサーバはRedisとMongoDBを同じDocker-Compose ymlファイルにリンクできません

redisdb error: { Error: Redis connection to localhost:6379 failed - connect ECONNREFUSED 127.0.0.1:6379 ....
MongoError: failed to connect to server [localhost:27017] on first connect ....

私がチェックするためにdocker psを使用して、すべての3個のコンテナが実行されていることを示しています。ここで

私のドッキングウィンドウ-compose.yml

version: "2" 
services: 
    mongo: 
    image: mongo:latest 
    ports: 
     - "27017:27017" 
    redis: 
    image: redis:latest 
    ports: 
     - "6379:6379" 
    web: 
    build: . 
    links: 
     - mongo 
     - redis 
    depends_on: 
     - mongo 
     - redis 
    ports: 
     - "3000:3000" 

ここでは、私は私もdocker-compose stop && docker-compose rm && docker-compose upを試してみたが、まだ失敗しているDB接続

client = redis.createClient({ "host": process.env.REDIS_PORT_6379_TCP_ADDR || 'localhost', "port": "6379" }); 
mongoose.connect(`mongodb://${process.env.MONGO_PORT_27017_TCP_ADDR || 'mongodb://localhost:27017/chichat'}`); 

を設定する方法です。

答えて

0

redisまたはmongoコンテナに接続する代わりに、localhostに接続しようとしました。環境変数REDIS_PORT_6379_TCP_ADDRMONGO_PORT_27017_TCP_ADDRが設定されていないために発生します。

1)アプリケーション内のredismongoホスト名を定義します。

あなたはこの問題を解決するには2つの方法があります。

client = redis.createClient({ "host":'redis', "port": "6379" }); 
mongoose.connect('mongodb://mongo:27017/chichat'}); 

2)環境変数を定義REDIS_PORT_6379_TCP_ADDRMONGO_PORT_27017_TCP_ADDRファイル

version: "2" 
services: 
    mongo: 
    image: mongo:latest 
    ports: 
     - "27017:27017" 
    redis: 
    image: redis:latest 
    ports: 
     - "6379:6379" 
    web: 
    build: . 
    links: 
     - mongo 
     - redis 
    depends_on: 
     - mongo 
     - redis 
    ports: 
     - "3000:3000" 
    environment: 
     - REDIS_PORT_6379_TCP_ADDR:"redis:6379" 
     - MONGO_PORT_27017_TCP_ADDR:"mongodb://mongo:27017" 

第二の方法はできるdocker-compose.ymlには多少の誤差が含まれています。私は、ULRがどのようにnodejsに提示されなければならないのかとは考えていません。

関連する問題