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

问题描述 投票:0回答:1

以下是问题的完整流程

1) Azure Build流水线使用以下方法创建一个工件(docker镜像 DockerFile

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 [email protected] -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环境中可以使用,这样它就可以取代原来的变量组。ENV 中的变量占位符 DockerFile.

但是在部署后,应用程序内使用的所有环境变量仍然没有定义,请你纠正我,是否可以使用我上面提到的方式docker环境。

azure docker azure-devops create-react-app azure-pipelines-release-pipeline
1个回答
0
投票

但是部署后,应用内使用的所有环境变量仍然没有定义,请你纠正我,是否可以用我上面提到的方式使用docker环境。

上面提到的方式不可能成功。在部署过程中,发布变量 不愿 自动 取而代之 stage-scope DockerFile中的释放变量。

作为一个变通方法,你可以尝试 Replace Tokens task替换代币在部署任务之前,在你的三个阶段中添加这个任务。所以你的三个阶段的任务顺序应该是类似的。Replace Tokens task 在DockerFile中设置发布变量=>docker build和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本身做任何改变,另一种方法是在命令行参数中传递该值。你可以检查 此类似职位 更多细节。

© www.soinside.com 2019 - 2024. All rights reserved.