无法读取Node.js中Docker环境文件的内容

时间:2017-08-15 14:26:58

标签: node.js docker docker-compose

我在docker-compose文件中指定了env文件 accounts.env

version: "3.3"
services:
  web:
    env_file: accounts.env
    build:
      context: .
      dockerfile: Dockerfile.test
    depends_on:
      - mysql
    volumes:
      - .:/app
      - /app/node_modules
    ports:
      - 3000:3000
  mysql:
    image: mysql:5.5
    environment:
      - MYSQL_ROOT_PASSWORD=***
      - MYSQL_DATABASE=***
      - MYSQL_USER=***
      - MYSQL_PASSWORD=***
    ports:
      - 3306:3306
  migrations:
    image: micheleminno/db-migrations:latest
    environment:
      - NODE_ENV=development
    depends_on:
      - mysql

这是env文件:

accountSize = 28

user1screenName = ***

...

这里是Node.js代码的示例,其中我读了env文件中定义的一些环境变量:

...

if (credentialsIndex < process.env.accountSize) {

...

我的问题是对象process.env不包含我指定的变量。有谁知道为什么?

1 个答案:

答案 0 :(得分:0)

这里有两件事。如果我运行以下撰写文件

version: "3.3"
services:
  web:
    env_file: accounts.env
    image: node
    command: node -e 'console.log(process.env);'

输出

web_1  | { PATH: '/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin',
web_1  |   HOSTNAME: 'd207b3388203',
web_1  |   'user1screenName ': ' tarun',
web_1  |   'accountSize ': ' 28',
web_1  |   NPM_CONFIG_LOGLEVEL: 'info',
web_1  |   NODE_VERSION: '8.3.0',
web_1  |   YARN_VERSION: '0.27.5',
web_1  |   HOME: '/root' }

正如您所看到的,accountSize将在=之后添加空格,并且环境名称为accountSize,末尾有空格。这意味着您需要使用process.env["accountSize "]访问它。无论如何修复环境文件,之前和之后都没有空格。