【问题标题】:set environment variable (REACT_APP_BASE_URL) value based on branch name / react with dockerfile根据分支名称设置环境变量(REACT_APP_BASE_URL)值/与 dockerfile 反应
【发布时间】:2020-05-16 21:37:39
【问题描述】:

我正在使用 Dockerfile 进行 React 项目。

我有不同的分支(dev、test、demo、stage..)我应该根据当前分支名称运行不同的 base_url

我为解决这个问题所做的是:

-在项目目录中创建 .env.dev .env.test ... 文件,并将这样的环境变量存储在每个创建的 env 文件中:

REACT_APP_BASE_URL'https://abc.branch-name.example' 看来在本地运行良好!

我的脚本: script file

我的 dockerfile 中的相关命令:

FROM node:8.11.2 as builder
WORKDIR /my-app

COPY . .

RUN npm rebuild node-sass
RUN npm run build

(我不允许使用 docker-compose.yaml)

当我推送代码时,构建器运行 dockerfile 并停留在(生产模式),它会忽略在本地工作的环境变量。

问题是如何让 docker 不忽略我的环境变量并检测当前分支?

  • webpack 插件可以解决这个问题吗?

我不喜欢更改 docker 中的任何内容,因为它不是由我创建的,而且我对 docker 不熟悉,所以如果这个问题可以通过 webpack 解决,请告诉我。

任何建议都会有所帮助,谢谢。

【问题讨论】:

    标签: reactjs docker webpack environment-variables


    【解决方案1】:

    试试这个:

    FROM node:8.11.2 as builder
    WORKDIR /my-app
    
    COPY . .
    
    ARG REACT_APP_BASE_URL
    ENV REACT_APP_BASE_URL $REACT_APP_BASE_URL
    
    
    RUN npm rebuild node-sass
    RUN npm run build
    

    使用示例

    import React, { Component } from 'react';
    
    class Example extends Component {
      render() {
        console.log(REACT_APP_BASE_URL);
        return (
          <div>
            <p>Example</p>
          </div>
        );
      }
    }
    
    export default HelloWorld;
    

    希望有用。

    【讨论】:

      猜你喜欢
      • 2020-11-16
      • 1970-01-01
      • 2020-02-28
      • 1970-01-01
      • 2017-11-28
      • 1970-01-01
      • 1970-01-01
      • 2018-10-22
      相关资源
      最近更新 更多