我有一个ReactJS应用程序,该应用程序与后端api对话以获取和修改数据。 React应用程序是从Kubernetes集群中的Nginx:alpine作为Docker映像部署的,而且,nginx将api请求路由到后端api。例如,在uat中,api将https://uat.mycompanydomain.com/app1/api
路由到未直接暴露在外部的后端服务。
应用的构建分为两个阶段-一个阶段用于开发,两个阶段用于uat和生产版本。
截至目前,该应用程序在Docker映像构建期间将后端api_url
(prod-> https://mycompanydomain.com/app1/api
)作为环境变量接收,并被刻录到映像本身中。因为,在部署期间无法使用作为Configmap
或env
变量传递的env覆盖此env变量。该应用程序内部使用REACT_APP_API_URL
读取值。
将api_url
动态传递给应用程序的最佳方法是什么,以使应用程序使用此变量而不管其部署在哪里。
PS:该应用在homepage
中设置了package.json
变量,并带有部署子目录。
答案 0 :(得分:0)
您可以在Dockerfile中使用ARG
ARG REACT_APP_API_URL=localhost
ENV REACT_APP_API_URL=$REACT_APP_API_URL
然后
docker build \
--build-arg REACT_APP_API_URL=$REACT_APP_API_URL .