Я пытаюсь передать переменные ENV во время выполнения в файл запуска моего docker контейнера (entrypoint.sh
) через файл docker. Варианты ENV происходят из ключевого хранилища в azure конвейере devops.
Кажется, я не могу передать переменные ENV с простым docker run -e YUMMY_USER=$(MY_USER) -e YUMMY_PASSWORD=$(MY_PW) yummyAppImage
. Vars используются для входа в сервис авторизации. Следует отметить, что пользователь и пароль из хранилища ключей содержат специальные символы. Мой dockerfile выглядит так:
FROM mcr.microsoft.com/dotnet/core/sdk:3.1 AS build-env
MAINTAINER YummyLumpkins <yummy@lumpkins.com>
WORKDIR /app
COPY . ./
RUN dotnet restore
RUN dotnet publish YummyApp -c Release -o out
FROM mcr.microsoft.com/dotnet/core/aspnet:3.1
WORKDIR /app
COPY --from=build-env /app/out .
COPY entrypoint.sh ./
RUN dos2unix entrypoint.sh && chmod +x entrypoint.sh
CMD ["/app/entrypoint.sh"]
И мой файл сценария оболочки выглядит так:
#!/bin/sh
set -e
az login --service-principal --username $YUMMY_USER --password $YUMMY_PASSWORD
dotnet /app/YummyApp.dll
exec "$@"
Я попытался вручную передать переменные ENV в команде docker run
, вот так: docker run -e YUMMY_USER=exampleuser12983#$23 -e YUMMY_PASSWORD=examplepw(*&876 YummyAppImage
но служба регистрации просто не видит аргументов.
Возможно, мой синтаксис неверен? Любая помощь будет принята с благодарностью. Спасибо!