将 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>