webpack 如何让React应用程序使用Docker容器中的env变量?

yk9xbfzb  于 11个月前  发布在  Webpack
关注(0)|答案(1)|浏览(147)

我有一个React应用程序,它使用webpack.js.js中指定的env变量。问题是env变量在构建时是硬编码的。如何使应用程序使用Docker容器中的env变量?我不想每次在生产环境中更改env变量时都要重新构建UI映像。
webpack.config.js

module.exports = {
  ...
  plugins: [
    new webpack.DefinePlugin({
      'process.env': {
        NODE_ENV: JSON.stringify(process.env.NODE_ENV || 'production'),
      },
    }),
  ],
}

字符串
Dockerfile

# Builder
FROM node:16 as builder

WORKDIR /usr/src/app

COPY package*.json ./
RUN yarn

COPY src ./src
COPY .babelrc .
COPY webpack* .
COPY config.docker.js ./config.js
COPY tsconfig.json .

RUN yarn build

# Runtime
FROM nginx:1.24-alpine3.17-slim

COPY support/ /
COPY --from=builder /usr/src/app/build /usr/share/nginx/html

dced5bon

dced5bon1#

你可以试试runtime-env
以下是您需要执行的几个步骤:
1.更改阅读环境变量的语法:

// main.js
- process.env.FOO
+ runtimeEnv.NODE_ENV // you could change runtimeEnv to whatever you want, see configuration section for details.

字符串
1.使用runtime-env生成runtime-env.js

npx runtime-env --mode development && npm run dev


1.尽早导入生成的文件:

<!-- index.html -->
+ <script src="/runtime-env.js"></script>
<script src="/main.js"></script>


希望这对你有帮助:)

相关问题