簡體   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