簡體   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