为了构建我的windows docker镜像,我需要从互联网上获取一些数据。不幸的是,中间有一个代理,所以我需要相应地配置构建shell环境。
为了不在每次构建期间显示用户名和密码(可以在日志中看到,例如Jenkins),我试图在以下Dockerfile
FROM microsoft/windowsservercore
SHELL ["powershell", "-Command"]
# set proxy credentials
COPY set_proxy.ps1 C:/Temp/
RUN """ C:/Temp/set_proxy.ps1"""
# download setups from web
RUN Invoke-WebRequest ...
以及set_proxy.ps1
文件如下(基于this和this)
$username = 'proxyUser'
$password = 'proxyPassword'
(New-Object System.Net.WebClient).Proxy.Credentials = New-Object System.Net.NetworkCredential($username, $password)
[Environment]::SetEnvironmentVariable("""HTTP_PROXY""", """http://$($username):$($password)@proxyHost:proxyPort""", [EnvironmentVariableTarget]::Machine)
[Environment]::SetEnvironmentVariable("""HTTPS_PROXY""", """http://$($username):$($password)@proxyHost:proxyPort""", [EnvironmentVariableTarget]::Machine)
当我在Invoke-WebRequest
脚本中执行set_proxy.ps1
下载工作时,如果我使用额外的RUN
步骤,它不起作用,我从代理收到错误消息。< / p>
这可能与Windows handles variables上的Docker如何相关。