2016-11-29 35 views
1

我試圖使用節點和mongodb映像構建Docker鏡像,但無法設置Dockerfile或docker-composer的環境變量。無法通過使用Docker中設置的環境系統變量從節點連接到MongoDB服務器

Dockerfile:

FROM node

RUN mkdir /app WORKDIR /app COPY package.json /app

RUN npm install COPY . /app

ENV MONGODB_URI 192.168.99.100/myapp

EXPOSE 3030

CMD ["npm", "start"]

泊塢窗,compose.yml:

version: "2"

services:

web:

build: . 

volumes: 

    - ./:/app 

ports: 

    - "3030:3030" 

environment: 

    - MONGODB_URI="192.168.99.100/myapp" 

links: 

    - "mongo" 

mongo:

image: "mongo" 

ports: 

    - "27017:27017" 

volumes_from: 

    - mongodata 

mongodata:

image: tianon/true 

volumes: 

    - /data/db 

我試圖從配置對象中得到MONGODB_URI。 console.log返回預期的結果,但仍然出現錯誤。

class Config {

constructor() { 
    this.port = process.env.PORT || 3030; 
    console.log(process.env.MONGODB_URI); 
    this.databaseUrl = process.env.MONGODB_URI || 'localhost/myapp'; 
} 

我得到的錯誤是:

Error: no hostname or hostnames provided in connection string web_1 | at module.exports (/app/node_modules/mongodb/lib/url_parser.js:24:11)

如果我嘗試直接使用URL,而不依賴於環境變量,它工作得很好,我得到一個連接。

回答

0

好吧,顯然我剛剛得到了我的橡皮鴨風格的答案。

問題出在' - MONGODB_URI =「192.168.99.100/myapp」'。 該值不應包含在引號中。

我將它設置爲「MONGODB_URI = 192.168.99.100/myapp」,它工作正常。

相關問題