首页 > 解决方案 > 如何使用 azure build yml 将环境变量添加到容器中?

问题描述

尝试使用 azure 将应用程序部署到 Kubernetes。我有一个构建管道 yml 文件,在管道中我设置了一个名为“discordToken”的变量。我尝试以两种不同的方式设置它,一种称为 discordToken,另一种称为 MY_MAPPED_ENV_VAR。在我正在做的节点项目中

console.log( process.env.discordToken )
console.log( process.env.MY_MAPPED_ENV_VAR )

但一切都以未定义的方式返回。

stages:
- stage: Build
  displayName: Build stage
  jobs:  
  - job: Build
    displayName: Build
    pool:
      vmImage: $(vmImageName)
      environment:
        discordToken: $(discordToken)
    steps:
    - powershell: |
      env:
        MY_MAPPED_ENV_VAR: $(discordToken)
    - task: Docker@2
      displayName: Build and push an image to container registry
      inputs:
        command: buildAndPush
        repository: $(imageRepository)
        dockerfile: $(dockerfilePath)
        containerRegistry: $(dockerRegistryServiceConnection)
        tags: |
          $(tag)

我应该如何设置环境变量?

标签: node.jsazureazure-devopsazure-pipelines-build-taskazure-pipelines-yaml

解决方案


据我所知,如果直接在Powershell Task中设置环境变量(env:xxx),该变量只能被当前任务使用。

您可以尝试使用 script 设置变量,然后可以通过以下任务使用这些变量。

例如:

- task: PowerShell@2
  inputs:
    targetType: 'inline'
    script: |
      # Write your PowerShell commands here.
      echo "##vso[task.setvariable variable=MY_MAPPED_ENV_VAR]$(discordToken)"

您可以在Settings -> Variables中设置参考变量:

变量

这是一张关于在 dockerfile 中设置环境变量的票,它可能会对您有所帮助。


推荐阅读