2017-11-18 20 views
0

私のアプリでMongoDB + NodeJSチュートリアルに従っています。すべてがDockerなしで動作します..そして、私は実際にMongoDBに接続する必要があるまで、アプリを稼働させることができます。Docker経由でNodeJSアプリケーションをMongoDBに接続しようとしています。

私のアプリにMongoDBが表示されない場合は、エラーが表示され、停止します。

ここに私のファイルへのコンテナのために、ドッキングウィンドウ-コンを使用して

.env

NODE_VIEWS_PATH=../ 
NODE_PUBLIC_PATH=../ 
MONGODB_URI='mongodb://127.0.0.1:27017/myappsdb' 
... 

Dockerfile

FROM node:carbon 

# Create app directory 
WORKDIR /usr/src/mahrio 

COPY package*.json ./ 

RUN npm install 
# If you are building your code for production 
# RUN npm install --only=production 

COPY . . 

EXPOSE 6085 

CMD ["npm", "start"] 

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

version: "2" 
services: 
    app: 
    container_name: someappname 
    restart: always 
    build: . 
    ports: 
     - "6085:6085" 
    links: 
     - mongo 
    depends_on: 
     - mongo 
    mongo: 
    container_name: mongo 
    image: mongo 
    volumes: 
     - ./tmp:/data/db 
    ports: 
     - "27017:27017" 
+1

バージョン2以上のファイルで 'links'を使う必要はありません。 – Matt

答えて

3

です別のコンテナに接続する接続にはホスト名としてサービス名を使用できます。

あなたのケースでは、それぞれのアプリケーションコンテナのlocalhostが自分のマシンではなく自分のマシンを参照するため、ノードアプリケーションはlocalhost:27017ではなくmongo:27017に接続する必要があります。

したがって、mongoのURLをMONGODB_URI='mongodb://mongo:27017/myappsdb'に変更してください。

app: 
... 
env_file: 
    - file.env 
+0

この.envファイルはnpmとnodeと共有されています。このような 'mongodb_URI'を変更することはできませんが、tempを試してみます。 – Erik

+0

mongodbが接続されていますが、 'localhost:6085'に行っても何も起こりません(サーバが見えないような動作) – Erik

+0

私はnodejsの問題を別の質問として尋ねます。 – Erik

関連する問題