将 NODE_ENV 从 package.json 传递到 Docker-compose
Passing NODE_ENV from package.json to Docker-compose
我正在尝试将 NODE_ENV=profiling-local 从 package.jso 传递到 Docker-compose,然后是 运行 脚本,但它没有接受它并且 process.env.NODE_ENV= undefined 来了。
我的docker-撰写文件:
version: "2"
services:
logs_db:
image: postgres
ports:
- "5434:5432"
expose:
- "5434"
volumes:
- data:/var/lib/postgresql/data
- ./db/setup.sql:/docker-entrypoint-initdb.d/seed.sql
networks:
- liven
environment:
POSTGRES_HOST_AUTH_METHOD: trust,
NODE_ENV: ${NODE_ENV}
event_engine:
build:
context: .
dockerfile: Dockerfile
entrypoint:
- 'sh'
- '-c'
- 'yarn install && yarn watch'
volumes:
- .:/src/app/
- /src/app/node_modules/
links:
- logs_db
depends_on:
- logs_db
networks:
- liven
volumes:
data:
driver: local
node_modules_volume:
我的package.json
{
"name": "event-engine",
"version": "1.0.0",
"description": "event engine",
"main": "src/index.js",
"author": "DT Starts",
"license": "MIT",
"private": true,
"scripts": {
"watch": "nodemon -L --exec babel-node src/index.js --config nodemon.json",
"start": "node ./dist/index.js",
"build": "babel src -d dist",
"dev": "docker-compose up",
"profiling":"NODE_ENV=profiling-local docker-compose up"
},
"devDependencies": {
"@babel/cli": "^7.12.1",
"@babel/core": "^7.12.3",
"@babel/node": "^7.12.1",
"@babel/plugin-proposal-class-properties": "^7.12.1",
"@babel/preset-env": "^7.12.1",
"@babel/register": "^7.12.1",
"babel-eslint": "^10.1.0",
"babel-plugin-module-resolver": "^4.0.0",
"eslint": "^6.8.0",
"eslint-config-airbnb": "^18.0.1",
"eslint-plugin-babel": "^5.3.0",
"eslint-plugin-import": "^2.20.1",
"nodemon": "^2.0.2",
"pino":"^6.11.2",
"dotenv": "^8.2.0"
},
"dependencies": {
"pg": "^7.18.2",
"redux": "^4.0.5",
"socketcluster-client": "^16.0.1",
"uuid": "^8.3.1"
}
}
之后但在我的 index.js 文件中 process.env.NOD_ENV 未定义。
我几乎尝试了所有方法将 enviromnet 变量传递给 docker-compose 文件,从 pacakge.json 的脚本以及我的 node.js 代码可以接受它的地方,但它未定义。
你没有说明你是如何运行这个文件的,但我猜你没有通过 build-arg:
docker-compose up --build-arg NODE_ENV=<value>
我正在尝试将 NODE_ENV=profiling-local 从 package.jso 传递到 Docker-compose,然后是 运行 脚本,但它没有接受它并且 process.env.NODE_ENV= undefined 来了。
我的docker-撰写文件:
version: "2"
services:
logs_db:
image: postgres
ports:
- "5434:5432"
expose:
- "5434"
volumes:
- data:/var/lib/postgresql/data
- ./db/setup.sql:/docker-entrypoint-initdb.d/seed.sql
networks:
- liven
environment:
POSTGRES_HOST_AUTH_METHOD: trust,
NODE_ENV: ${NODE_ENV}
event_engine:
build:
context: .
dockerfile: Dockerfile
entrypoint:
- 'sh'
- '-c'
- 'yarn install && yarn watch'
volumes:
- .:/src/app/
- /src/app/node_modules/
links:
- logs_db
depends_on:
- logs_db
networks:
- liven
volumes:
data:
driver: local
node_modules_volume:
我的package.json
{
"name": "event-engine",
"version": "1.0.0",
"description": "event engine",
"main": "src/index.js",
"author": "DT Starts",
"license": "MIT",
"private": true,
"scripts": {
"watch": "nodemon -L --exec babel-node src/index.js --config nodemon.json",
"start": "node ./dist/index.js",
"build": "babel src -d dist",
"dev": "docker-compose up",
"profiling":"NODE_ENV=profiling-local docker-compose up"
},
"devDependencies": {
"@babel/cli": "^7.12.1",
"@babel/core": "^7.12.3",
"@babel/node": "^7.12.1",
"@babel/plugin-proposal-class-properties": "^7.12.1",
"@babel/preset-env": "^7.12.1",
"@babel/register": "^7.12.1",
"babel-eslint": "^10.1.0",
"babel-plugin-module-resolver": "^4.0.0",
"eslint": "^6.8.0",
"eslint-config-airbnb": "^18.0.1",
"eslint-plugin-babel": "^5.3.0",
"eslint-plugin-import": "^2.20.1",
"nodemon": "^2.0.2",
"pino":"^6.11.2",
"dotenv": "^8.2.0"
},
"dependencies": {
"pg": "^7.18.2",
"redux": "^4.0.5",
"socketcluster-client": "^16.0.1",
"uuid": "^8.3.1"
}
}
之后但在我的 index.js 文件中 process.env.NOD_ENV 未定义。 我几乎尝试了所有方法将 enviromnet 变量传递给 docker-compose 文件,从 pacakge.json 的脚本以及我的 node.js 代码可以接受它的地方,但它未定义。
你没有说明你是如何运行这个文件的,但我猜你没有通过 build-arg:
docker-compose up --build-arg NODE_ENV=<value>