2017-08-15 49 views
0

我在泊塢窗,撰寫文件中指定的文件包膜accounts.env無法讀取泊塢窗環境文件的內容的Node.js

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

你有沒有試過在'.env'文件中去掉'='周圍的空格?我相信這就是爲什麼你的變量沒有顯示出來 – shiv

+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 "]訪問它。無論如何修復環境文件,前後沒有空間。