【问题标题】:How to set environment variables in Windows Command Prompt so they’re passed in `docker run -e FOO -e …` like with bash export如何在 Windows 命令提示符中设置环境变量,以便在 `docker run -e FOO -e ...` 中传递它们,就像使用 bash 导出一样
【发布时间】:2021-07-03 18:02:54
【问题描述】:

是否有相当于 bash 的export 的 Windows?我想设置一个环境变量,以便后续命令可以使用它。我setx一个永久的环境变量。

例如,这可以在 Windows 终端 PowerShell 命令提示符中与 Docker for Windows 一起正常工作。 FOO 环境变量值在容器中可用。

PS C:\Users\Owner> docker run -e FOO=bar centos env
PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
HOSTNAME=05b90a09d7fd
FOO=bar
HOME=/root

但是我如何在 Windows 中设置一个相当于 bash 导出的 env 变量,以便它可以在 直接在每个 docker run 命令上设置值的情况下使用? 在这里可以看到set 没有将FOO 的值传递给容器。

PS C:\Users\Owner> set FOO=bar
PS C:\Users\Owner> docker run -e FOO centos env
PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
HOSTNAME=6642033b3753
HOME=/root

我知道我可以创建一个 env 文件并将其传递给 docker run,但我试图避免这种情况。

PS:我在这里问了这个问题,但没有得到答案: https://forums.docker.com/t/how-to-set-environment-variables-in-command-prompt-so-theyre-passed-in-docker-run-e-foo-e/106776/4

【问题讨论】:

  • 您在寻找这样的东西吗? $env:FOO = 'BAR' ; docker run -it -e FOO alpine:3.9 /bin/sh 在这里,在容器中运行env 显示FOO=BAR

标签: docker powershell


【解决方案1】:

this answer,您可以使用Powershell 的$env:VARIABLE_NAME 为您的shell 设置一个本地环境变量。

如果我正确理解您的问题,如果您的目标是从当前终端会话中获取变量名称/值,这应该对您有用。

PS C:\> $env:FOO = 'BAR'
PS C:\> docker run -it -e FOO alpine:3.9 /bin/sh
/ # env
HOSTNAME=e1ef1d7393b2
SHLVL=1
HOME=/root
TERM=xterm
PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
FOO=BAR
PWD=/
/ # exit
PS C:\>

unset 的等效项是以下之一(感谢@mklement0 的建议):

Remove-Item env:\FOO

# suggested by mklement0
$env:FOO = $null

【讨论】:

    【解决方案2】:

    创建一个 Powershell 脚本docker_run.ps1

    并且在脚本内部,可以定义全局变量,然后在脚本末尾写的docker run命令中使用。

    这样可以很容易地重复使用易于编辑的命令以及任何快速更改。

    文件如下所示:

    $global:ENV1="VALUE1"
    $global:ENV2="VALUE2"
    
    docker run -e ENV1=$ENV1 -e ENV2=$ENV2 --name Container_Name Image_Name
    

    现在只需在 CMD 中运行此脚本:

    1. powershell

    2. powershell docker_run.ps1

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-04-29
      • 2020-04-08
      • 2015-09-13
      • 2022-08-16
      • 1970-01-01
      • 2011-07-20
      • 2021-11-06
      • 2012-10-01
      相关资源
      最近更新 更多