[英]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.