我在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不包含我指定的变量。有谁知道为什么?
答案 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 "]
访问它。无论如何修复环境文件,之前和之后都没有空格。