繁体   English   中英

将自定义环境变量传递到 dockerized react-admin 应用程序中

[英]Passing custom environment variables into dockerized react-admin app

我在一个将在 Docker 群中运行的项目中使用react-admin

由于我们有多个环境,我定义了一个环境变量REACT_APP_API_ENDPOINT ,它指向我们的应用程序的 API,react-admin 将与之交互。

到目前为止,我已经了解到这个变量必须在构建时“烘焙到 react-admin”。 所以我在我的Dockerfile添加了以下Dockerfile

ARG REACT_APP_API_ENDPOINT
ENV REACT_APP_API_ENDPOINT $REACT_APP_API_ENDPOINT

如果这是真的,我的以下假设是否正确?

  • 运行REACT_APP_API_ENDPOINT docker build命令时,我必须设置REACT_APP_API_ENDPOINT的值。
  • 每个环境我都需要一个 Docker 镜像。

或者是否有更可行和动态的方式将该变量传递给 react-admin?

    1.

dockerfile

ARG REACT_APP_API_ENDPOINT

docker build --build-arg REACT_APP_API_ENDPOINT=192.168.0.1

  1. 您需要为每个环境构建容器

我终于让它工作了。

文件

ARG REACT_APP_API_ENDPOINT
ENV REACT_APP_API_ENDPOINT $REACT_APP_API_ENDPOINT

然后,构建容器:
docker build -t myimage --build-arg REACT_APP_API_ENDPOINT=<URL> .

我觉得这REACT_APP_MY_VARIABLE ,但我想不出任何其他方式,因为 React 在构建时确实需要自定义变量,如REACT_APP_MY_VARIABLE

一开始我认为在 docker-compose 文件中传递环境变量会起作用,但是在 Dockerfile 中使用RUN printenv (打印系统环境变量),我发现我传入的变量在 React 构建生产文件时不可用。 这里的关键是在创建镜像时,在创建 React 构建文件之前,在 Dockerfile 中传递环境变量。 因此,像这样的 Dockerfile 应该可以工作:

FROM node:13.12.0-alpine as build
WORKDIR /app
ENV PATH /app/node_modules/.bin:$PATH
#declaring react custom environment variable
ENV REACT_APP_API_HOST http://localhost:8080
COPY package.json ./
COPY package-lock.json ./
RUN npm ci --silent
COPY . ./
RUN npm run build

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM