Pal*_*lBo 5 azure docker dockerfile azure-devops
In my projects Docker file I have some environment variables, like this:
ENV ACCEPT_EULA=Y
ENV SA_PASSWORD=Password
ENV MSSQL_PID=Developer
ENV MSSQL_TCP_PORT=1433
Run Code Online (Sandbox Code Playgroud)
And I would like to pass the password here as an environment variable set in my pipeline.
In Azure DevOps I have two pipelines. One for building the solution and one for building and pushing docker images to DockerHub. There are options to set variables in both these pipelines:
我已经在两个管道中设置了密码,并在 Dockerfile 中编辑了我的密码,如下所示:
ENV SA_PASSWORD=$(SA_PASSWORD)
Run Code Online (Sandbox Code Playgroud)
但这似乎不起作用。将环境变量从 Azure DevOps 传递到 Docker 映像的正确方法是什么?
另外,这是传递秘密的安全方式吗?有什么办法可以从 Docker 镜像中读取机密?
谢谢!
您可以设置一个ARG var_name
并引用 ENV 到 ARG 变量。然后你可以在 docker 构建镜像时替换这些变量$ docker build --build-arg var_name=$(VARIABLE_NAME)
例如在 dockerfile 中添加 ARG,并让 ENV 变量引用它:
ARG SECRET
ENV ACCEPT_EULA=Y
ENV SA_PASSWORD=$SECRET
ENV MSSQL_PID=Developer
ENV MSSQL_TCP_PORT=1433
Run Code Online (Sandbox Code Playgroud)
您可以单独使用停靠构建任务和停靠推送任务,因为 buildandpush 命令不能接受参数。并SECRET
在您的管道中设置一个变量。
设置 Build ArgumentsSECRET= $(SECRET)
以替换 ARG SECRET
您也可以参考一个类似的线程。
我正在使用替换令牌扩展来执行如下任务: https: //marketplace.visualstudio.com/items?itemName =qetza.replacetokens
然而,将秘密放入 Dockerfile 中可能不是最好的主意。通常,当您实际执行容器时,您会提供机密或一般运行时配置作为环境变量。
归档时间: |
|
查看次数: |
12369 次 |
最近记录: |