Как dockerize create-response-app может получить доступ к azure релизным переменным конвейера в среде docker - PullRequest
0 голосов
/ 24 апреля 2020

Вот полный поток проблемы

1) Azure Конвейер сборки создает артефакт (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 react-scripts@3.0.1 -g
COPY . /usr/src/app
RUN npm run build

FROM hub.docker.prod.walmart.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) Многоступенчатый конвейер Release извлекает образ из ACR и развертывает его в azure службах приложений (QA -> Stage -> Prod).

4) Конвейер выпуска использует значения переменных из группы переменных, определенной в конвейере выпуска, и я ожидаю, что эти переменные должны быть доступны в среде docker, чтобы заменить ENV заполнителей переменных в DockerFile.

Но после развертывания все переменные среды, которые используются внутри приложения, остаются неопределенными, не могли бы вы исправить меня, если возможно использовать среду docker так, как я упоминал выше.

1 Ответ

0 голосов
/ 28 апреля 2020

Но после развертывания все переменные среды, которые используются внутри приложения, остаются неопределенными, не могли бы вы исправить меня, если возможно использовать среду docker, как я упоминал выше.

Упомянутый выше способ не был возможен для работы. Во время процесса развертывания переменные выпуска не будут автоматически заменять исходные значения stage-scope переменными выпуска в DockerFile.

В качестве обходного пути вы можете попробовать Replace Tokens task из Заменить жетоны , добавьте эту задачу в три этапа перед развертыванием задачи. Таким образом, порядок задач на трех этапах должен быть примерно таким: 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, другим способом это передать значение в аргументах командной строки. Вы можете проверить этот аналогичный пост для более подробной информации.

...