azure - 如何通过 Azure DevOps 在 Dockerfile 中设置环境变量

标签 azure docker azure-devops dockerfile

在我的项目 Docker 文件中,我有一些环境变量,如下所示:

ENV ACCEPT_EULA=Y
ENV SA_PASSWORD=Password
ENV MSSQL_PID=Developer
ENV MSSQL_TCP_PORT=1433 

我想将密码作为管道中设置的环境变量传递。

在 Azure DevOps 中,我有两个管道。一份用于构建解决方案,一份用于构建 Docker 镜像并将其推送到 DockerHub。有一些选项可以在这两个管道中设置变量: enter image description here enter image description here 我已经在两个管道中设置了密码,并在 Dockerfile 中编辑了密码,如下所示:

ENV SA_PASSWORD=$(SA_PASSWORD)

但这似乎不起作用。将环境变量从 Azure DevOps 传递到 Docker 镜像的正确方法是什么?

此外,这是一种安全的传递 secret 的方式吗?有什么方法可以从 Docker 镜像中读取 secret 吗?

谢谢!

最佳答案

您可以设置 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 

您可以单独使用停靠构建任务和停靠推送任务,因为 buildandpush 命令无法接受参数。并在管道中设置一个变量SECRET

enter image description here

设置构建参数SECRET= $(SECRET)来替换ARG SECRET

enter image description here

您也可以引用类似的thread .

关于azure - 如何通过 Azure DevOps 在 Dockerfile 中设置环境变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59932994/

相关文章:

Azure 监控 - 警报 - 通知状态未设置为 "Subscribed"

powershell - 在 Azure DevOps 发布管道中从 PowerShell 执行 SQLCMD.exe

azure-devops - 在 Azure DevOps Yaml 管道中调试

azure - 从 swagger 文件生成 Azure API 应用程序客户端时出现 NotSupportedException

angularjs - 如何从 azure Active Directory 连接到客户端的 ADFS

linux - 难以访问 Docker 的 API

jenkins - 为什么 Docker 在将图像推送到私有(private)注册表时会重置连接?

docker - 从 Go api 连接到 Redshift 时出现 SSL 错误

azure - 有关永久删除/销毁工作项 Azure DevOps 的信息

azure - 是否可以在不使用 RBAC 的情况下通过 AAD 授予创建 Azure 资源组的权限?