我正在尝试通过 dockerfile 在运行时将 ENV vars 传递给我entrypoint.sh
的 docker 容器的启动文件()。ENV 变量来自 azure devops 管道中的密钥库。
我似乎无法通过简单的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"]
我的 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#$23 -e YUMMY_PASSWORD=examplepw(*&876 YummyAppImage
但登录服务根本看不到参数。
也许我的语法不正确?任何帮助将不胜感激。谢谢!