Передайте ENV var через 'docker run -e MY_VAR = value' в точку входа. sh? - PullRequest
0 голосов
/ 26 февраля 2020

Я пытаюсь передать переменные 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 но служба регистрации просто не видит аргументов.

Возможно, мой синтаксис неверен? Любая помощь будет принята с благодарностью. Спасибо!

Ответы [ 3 ]

1 голос
/ 26 февраля 2020

Цитируйте свои переменные. Специальные символы в этих строках без кавычек будут интерпретироваться оболочкой, выполняющей команду:

#!/bin/sh
set -e

az login --service-principal --username "$YUMMY_USER" --password "$YUMMY_PASSWORD"
dotnet /app/YummyApp.dll

exec "$@"

, а также в вашей команде docker run в зависимости от вашей оболочки:

docker run \
  -e 'YUMMY_USER=exampleuser12983#$23' \
  -e 'YUMMY_PASSWORD=examplepw(*&876' \
  YummyAppImage
0 голосов
/ 26 февраля 2020

Попробуйте запустить переменную среды с одинарной кавычкой:

docker run \
  -e 'YUMMY_USER=exampleuser12983#$23' \
  -e 'YUMMY_PASSWORD=examplepw(*&876' \
  YummyAppImage
0 голосов
/ 26 февраля 2020

Пожалуйста, определите переменные ENV в файле dockerfile

FROM mcr.microsoft.com/dotnet/core/sdk:3.1 AS build-env
MAINTAINER YummyLumpkins <yummy@lumpkins.com>

ENV YUMMY_USER default
ENV YUMMY_PASSWORD default
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"]
...