在我的项目 Docker 文件中,我有一些环境变量,如下所示:
ENV ACCEPT_EULA=Y
ENV SA_PASSWORD=Password
ENV MSSQL_PID=Developer
ENV MSSQL_TCP_PORT=1433
我想将密码作为管道中设置的环境变量传递。
在 Azure DevOps 中,我有两个管道。一份用于构建解决方案,一份用于构建 Docker 镜像并将其推送到 DockerHub。有一些选项可以在这两个管道中设置变量: 我已经在两个管道中设置了密码,并在 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
。
设置构建参数SECRET= $(SECRET)
来替换ARG SECRET
您也可以引用类似的thread .
关于azure - 如何通过 Azure DevOps 在 Dockerfile 中设置环境变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59932994/