我正在使用Dockerfile进行React项目。
我有不同的分支(开发,测试,演示,阶段)。我应该根据当前分支名称运行不同的base_url。
我为解决此问题所做的事情是:
-在项目目录中创建.env.dev .env.test ...文件,并将这样的环境变量存储在每个创建的环境文件中:
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不要忽略我的环境变量并检测当前分支?
我不想更改不是我创建的docker cuz中的任何内容,而且我对docker不熟悉,所以请让我知道是否可以使用webpack修复此问题。
任何建议都会有所帮助,谢谢。
答案 0 :(得分:0)
尝试一下:
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;
希望有用。