React 在生产构建中安全地提供环境变量

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

# 阶段 1:构建 React 应用程序
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

# 阶段 2:构建生产环境
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

# 将请求和错误日志转发到 docker 日志收集器
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;"]

目前,构建过程使那些变量暴露出来 :(

点赞
用户3154167
用户3154167

你可以使用 dotenv 在构建过程中加载你的环境变量(例如在webkpack中使用DefinePlugin)使用**.env**文件。

然后你只需要RUN yarn run -s build,而不必指定每个单独的env变量。

有一个可以快速设置Webpack的npm包。webpack-dotenv

2019-02-04 16:47:08