Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/docker/10.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Reactjs 在生产构建时对安全环境变量作出反应_Reactjs_Docker_Jenkins_Docker Compose_Yarnpkg - Fatal编程技术网

Reactjs 在生产构建时对安全环境变量作出反应

Reactjs 在生产构建时对安全环境变量作出反应,reactjs,docker,jenkins,docker-compose,yarnpkg,Reactjs,Docker,Jenkins,Docker Compose,Yarnpkg,我正在构建一个React应用程序,并使用Docker和Jenkins进行生产部署。。。如何安全地向此静态应用程序提供环境变量? 这是我的Dockerfile: # stage 1: build the react app FROM node:10.15.0 as react-build WORKDIR /app COPY . /app ARG REACT_APP_API_ENTRYPOINT ARG REACT_APP_CONNECT_URI ARG REACT_APP_CONNECT_CL

我正在构建一个React应用程序,并使用Docker和Jenkins进行生产部署。。。如何安全地向此静态应用程序提供环境变量? 这是我的Dockerfile:

# stage 1: build the react app
FROM node:10.15.0 as react-build

WORKDIR /app
COPY . /app

ARG REACT_APP_API_ENTRYPOINT
ARG REACT_APP_CONNECT_URI
ARG REACT_APP_CONNECT_CLIENT_ID
ARG REACT_APP_CONNECT_SECRET
ARG REACT_APP_CONNECT_CALLBACK_URL

RUN yarn
ENV NODE_ENV=production
ENV REACT_APP_API_ENTRYPOINT=${REACT_APP_API_ENTRYPOINT}
ENV REACT_APP_CONNECT_URI=${REACT_APP_CONNECT_URI}
ENV REACT_APP_CONNECT_CLIENT_ID=${REACT_APP_CONNECT_CLIENT_ID}
ENV REACT_APP_CONNECT_SECRET=${REACT_APP_CONNECT_SECRET}
ENV REACT_APP_CONNECT_CALLBACK_URL=${REACT_APP_CONNECT_CALLBACK_URL}
RUN yarn run -s build

# Stage 2: build the production environment
FROM openresty/openresty:alpine
COPY deploy/files/nginx.conf /etc/nginx/conf.d/default.conf
COPY --from=react-build /app /usr/local/openresty/nginx/html

# forward request and error logs to docker log collector
RUN ln -sf /dev/stdout /usr/local/openresty/nginx/logs/access.log && \
    ln -sf /dev/stderr /usr/local/openresty/nginx/logs/error.log

EXPOSE 8000
ENTRYPOINT ["nginx", "-g", "daemon off;"]
在构建过程公开这些变量的时候:(

您可以使用.env文件在构建过程中加载环境变量(例如在带有DefinePlugin的webkpack中)

然后您只需
运行warn RUN-s build
,而不必指定每个单独的env变量


甚至还有一个快捷的npm软件包用于你的网页设置。

为什么你在客户端应用程序中使用一些秘密变量,如React?因为我需要连接到需要它的API。保护这些变量的最佳做法是什么?你有后端应用程序连接到API吗?通常,当你连接到API时,你需要在后端连接你可以保护你的秘密变量。谢谢,但这也会在构建完成后暴露变量。@numediaweb你不能隐藏任何环境变量。如果构建需要它们,你不能隐藏它们。我明白了,所以我想我需要一个后端服务器……奇怪的是,React文档中没有提到这样的内容:我的意思是,大多数应用程序都需要某种环境变量至少可用于dev/staging/production env…@numediaweb React是一个库。它不关心他们如何使用它。任何环境变量都是通过JS环境和您使用的任何构建过程使用的。您甚至可能不运行webpack。因此它根本不关心React