docker-compose未定义process.env

时间:2019-03-21 10:02:24

标签: node.js docker webpack environment-variables

我在带有webpack的nodejs中有一个脚本,我想使用docker-compose中的环境变量,但是每次变量为undefined时。

这是一小部分docker-compose:

container:
    image: "node:8-alpine"
    user: "node"
    working_dir: /home/node/app
    environment:
      - NODE_ENV=development
    volumes:
      - ./project:/home/node/app
      - ./conf:/home/node/conf
    command: "yarn start"

我有此webpack配置:

const path = require('path');
const TerserPlugin = require('terser-webpack-plugin');
const DefinePlugin = require('webpack').DefinePlugin;

module.exports = {
  entry: './src-js/widget.js',
  mode: process.env.NODE_ENV || 'development',
  output: {
    filename: 'widget.js',
    path: path.resolve(__dirname, 'public')
  },
  optimization: {
    minimizer: [new TerserPlugin()]
  },
  plugins: [
    new DefinePlugin({
      ENV: JSON.stringify(process.env.NODE_ENV)
    })
  ]
};

在我的节点脚本中,我想使用NODE_ENV变量,因此我尝试了所有这些解决方案,但是每次都是undefined

console.log(process.env.NODE_ENV);
console.log(ENV);
console.log(process.env); //is empty

从docker容器中,我尝试打印环境变量,并且在其中包含NODE_ENV,但无法将其用于节点文件中。为什么?

通常我使用yarn buildyarn watch重新编译

1 个答案:

答案 0 :(得分:1)

在您的webpack配置中尝试以下操作:

new DefinePlugin({
  'process.env.NODE_ENV': JSON.stringify(process.env.NODE_ENV)
})

此外,官方文档对此有snippet