[英]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
的值。或者是否有更可行和动态的方式将该变量传递给 react-admin?
dockerfile
ARG REACT_APP_API_ENDPOINT
docker build --build-arg REACT_APP_API_ENDPOINT=192.168.0.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.