当前位置: 首页 > 知识库问答 >
问题:

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

蓬运诚
2023-03-14

以下是问题的完整流程

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)。

共有1个答案

萧业
2023-03-14

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

上面提到的方法不可能奏效。在部署过程中,发布变量不会自动用DockerFile中的stage-scope发布变量替换原始值。

作为一种解决办法,您可以从替换令牌,在部署前的三个阶段任务中尝试Replace Tokens任务。因此,三个阶段中的任务顺序应该类似于:replace Tokens任务在dockerfile=>docker build和push=>deploy任务中设置释放变量。

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本身进行任何更改,另一种方法是在命令行参数中传递值。你可以查看这篇类似的帖子以了解更多细节。

 类似资料:
  • Azure发布管道可以使用环境功能吗?我一直在寻找,但所有使用环境的示例都是YAML和管道部署任务。

  • 我在Azure DevOps中有一个发布管道。这是从ACR中提取docker映像并发布到Web应用程序(linux容器)。所有工作都很好(容器按预期发布和运行),但是我似乎不能在运行时向容器传递任何自定义环境变量。 释放管道 在管道“Deploy Azure App Service”中的变量选项卡下,我添加了,然后在“App Settings”下添加了 有人知道如何在运行时通过Azure DevO

  • 只是想知道,我可以在谷歌应用程序引擎中访问环境变量吗?例如,我存储了一封电子邮件和密码,并希望按如下方式访问它: 有什么办法可以做到这一点吗?

  • 问题内容: 是否有任何环境变量可用于获取Jenkins管道标题? 我知道我们可以使用它来获得自由职业的头衔,但是有什么可以用来获取管道名称的东西吗? 问题答案: 您可以使用相同的名称(例如或)从groovy访问相同的环境变量。 从文档中: 可以从Groovy代码中以env.VARNAME或仅以VARNAME的形式访问环境变量。您也可以写入这些属性(仅使用env。前缀): 这些定义也将在构建期间或构

  • 我正在Azure Devops中创建CICD管道。 我有一个动态设置名称的管道。 然后在构建阶段我更新它 我目前有3个阶段 构建 建立起来 通过VSO命令设置构建名称 发布神器 下载构件并部署到开发环境 下载工件并部署到测试环境 实际上,我正在使用Azure Devops中的环境来跟踪所有部署,这就是问题所在。在“管道”视图中正确更新管道生成编号时 当我转到环境选项卡时,显示的是未更新的构建名称。

  • 问题内容: Jenkins参数区分大小写吗?我有一个参数化的构建,需要在构建之前设置一个名为“ build_parameter”的蚂蚁参数。当我尝试访问Jenkins设置的$ {BUILD_NUMBER}时,我得到了为ant参数设置的值。如果构建参数不区分大小写,那么有人可以建议我解决此问题吗?我无法更改构建参数名称,因为必须更改构建脚本(这不是一个选择)。谢谢! 问题答案: 为了回答您的第一个问