我正在尝试使用 Node 和 mongodb 镜像构建 Docker 镜像,但无法从 Dockerfile 或 docker-composer 设置环境变量。
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"]
docker-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,而不依赖环境变量,它会正常工作并且我会获得连接。
最佳答案
嗯,显然我刚刚得到了橡皮鸭式的答案。
问题出在“- MONGODB_URI="192.168.99.100/myapp””。 该值不应包含在引号中。
我将其设置为“MONGODB_URI=192.168.99.100/myapp”并且工作正常。
关于node.js - 无法使用Docker中设置的环境系统变量从 Node 连接到MongoDB服务器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40875964/