通过 'docker run -e MY_VAR=value' 将 ENV var 传递给 entrypoint.sh?
Pass ENV var through 'docker run -e MY_VAR=value' to entrypoint.sh?
我试图在运行时通过 docker 文件将 ENV 变量传递到我的 docker 容器的启动文件 (entrypoint.sh
)。 ENV 变量来自 azure devops 管道中的密钥库。
我似乎无法通过简单的 docker run -e YUMMY_USER=$(MY_USER) -e YUMMY_PASSWORD=$(MY_PW) yummyAppImage
传递 ENV 变量。 vars 用于登录授权服务。应该注意的是,来自密钥库的用户和密码都包含特殊字符。我的 docker 文件如下所示:
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"]
我的 shell 脚本文件如下所示:
#!/bin/sh
set -e
az login --service-principal --username $YUMMY_USER --password $YUMMY_PASSWORD
dotnet /app/YummyApp.dll
exec "$@"
我尝试在 docker run
命令中手动传递 ENV 变量,如下所示:
docker run -e YUMMY_USER=exampleuser12983# -e YUMMY_PASSWORD=examplepw(*&876 YummyAppImage
但登录服务根本看不到参数。
也许我的语法不正确?任何帮助将不胜感激。谢谢!
请在dockerfile中定义ENV变量
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"]
引用你的变量。这些字符串中没有引号的特殊字符将由 shell 运行 命令解释:
#!/bin/sh
set -e
az login --service-principal --username "$YUMMY_USER" --password "$YUMMY_PASSWORD"
dotnet /app/YummyApp.dll
exec "$@"
并且在您的 docker run
命令中也取决于您的 shell:
docker run \
-e 'YUMMY_USER=exampleuser12983#' \
-e 'YUMMY_PASSWORD=examplepw(*&876' \
YummyAppImage
尝试 运行 带单引号的环境变量:
docker run \
-e 'YUMMY_USER=exampleuser12983#' \
-e 'YUMMY_PASSWORD=examplepw(*&876' \
YummyAppImage
我试图在运行时通过 docker 文件将 ENV 变量传递到我的 docker 容器的启动文件 (entrypoint.sh
)。 ENV 变量来自 azure devops 管道中的密钥库。
我似乎无法通过简单的 docker run -e YUMMY_USER=$(MY_USER) -e YUMMY_PASSWORD=$(MY_PW) yummyAppImage
传递 ENV 变量。 vars 用于登录授权服务。应该注意的是,来自密钥库的用户和密码都包含特殊字符。我的 docker 文件如下所示:
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"]
我的 shell 脚本文件如下所示:
#!/bin/sh
set -e
az login --service-principal --username $YUMMY_USER --password $YUMMY_PASSWORD
dotnet /app/YummyApp.dll
exec "$@"
我尝试在 docker run
命令中手动传递 ENV 变量,如下所示:
docker run -e YUMMY_USER=exampleuser12983# -e YUMMY_PASSWORD=examplepw(*&876 YummyAppImage
但登录服务根本看不到参数。
也许我的语法不正确?任何帮助将不胜感激。谢谢!
请在dockerfile中定义ENV变量
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"]
引用你的变量。这些字符串中没有引号的特殊字符将由 shell 运行 命令解释:
#!/bin/sh
set -e
az login --service-principal --username "$YUMMY_USER" --password "$YUMMY_PASSWORD"
dotnet /app/YummyApp.dll
exec "$@"
并且在您的 docker run
命令中也取决于您的 shell:
docker run \
-e 'YUMMY_USER=exampleuser12983#' \
-e 'YUMMY_PASSWORD=examplepw(*&876' \
YummyAppImage
尝试 运行 带单引号的环境变量:
docker run \
-e 'YUMMY_USER=exampleuser12983#' \
-e 'YUMMY_PASSWORD=examplepw(*&876' \
YummyAppImage