繁体   English   中英

dockerize create-react-app如何在docker环境下访问azure发布管道变量

[英]How dockerize create-react-app can access to azure release pipeline variables in docker environment

这是问题的完整流程

1) Azure 构建管道使用以下DockerFile创建一个工件(docker 镜像)

FROM hub.docker.prod.private.com/library/node:10.16-alpine as buildImage
RUN mkdir -p /usr/src/app
WORKDIR /usr/src/app

ENV PATH /app/node_modules/.bin:$PATH
ENV REACT_APP_SERVER_URL=${REACT_APP_SERVER_URL}
ENV REACT_APP_AD_APP_ID=${REACT_APP_AD_APP_ID}
ENV REACT_APP_REDIRECT_URL=${REACT_APP_REDIRECT_URL}
ENV REACT_APP_AUTHORITY=${REACT_APP_AUTHORITY}

COPY package.json /usr/src/app/
RUN npm install
RUN npm install react-scripts@3.0.1 -g
COPY . /usr/src/app
RUN npm run build

FROM hub.docker.prod.private.com/library/nginx:1.15.12-alpine
COPY --from=buildImage /usr/src/app/build /usr/share/nginx/html
RUN rm /etc/nginx/conf.d/default.conf
COPY nginx/nginx.conf /etc/nginx/conf.d
EXPOSE 80
CMD ["nginx", "-g", "daemon off;"]

2) 并将 docker 镜像推送到 Azure 容器注册表 ( ACR )。

3) 多阶段发布管道从ACR中提取图像并部署在 azure 应用服务上( QA -> Stage -> Prod )。

4) 发布管道正在使用发布管道中定义的变量组中的变量值,我期望这些变量应该在 docker 环境中可用,以便它替换DockerFile中的ENV变量占位符。

但是在部署之后,应用程序内部使用的所有环境变量仍然未定义,如果可以按照我上面提到的方式使用 docker 环境,请您纠正我。

但是在部署之后,应用程序内部使用的所有环境变量仍然未定义,如果可以按照我上面提到的方式使用 docker 环境,请您纠正我。

上面提到的方法是行不通的。 在部署过程中,Release Variables不会自动将原始值替换为 DockerFile 中的stage-scope发布变量。

作为解决方法,您可以尝试从Replace Tokens 中Replace Tokens task Replace Tokens 任务,在部署任务之前的三个阶段中添加此任务。 所以你的三个阶段的任务顺序应该类似于: Replace Tokens task以在 DockerFile 中设置发布变量=>docker build and push=>deploy 任务。

要使用此任务,您的 Dockerfile 应该是:

ENV REACT_APP_SERVER_URL=#{REACT_APP_SERVER_URL}#
ENV REACT_APP_AD_APP_ID=#{REACT_APP_AD_APP_ID}#
ENV REACT_APP_REDIRECT_URL=#{REACT_APP_REDIRECT_URL}#
ENV REACT_APP_AUTHORITY=#{REACT_APP_AUTHORITY}#

有关此任务如何工作的详细信息,请查看我的另一个问题

如果您不想对 Dockerfile 本身进行任何更改,另一种方法是在命令行 arguments 中传递该值。您可以查看此类似帖子以获取更多详细信息。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM