我試圖使用節點和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,而不依賴於環境變量,它工作得很好,我得到一個連接。