在windows docker build期间执行powershell脚本来设置环境

时间:2018-01-16 13:30:47

标签: windows powershell docker dockerfile

为了构建我的windows docker镜像,我需要从互联网上获取一些数据。不幸的是,中间有一个代理,所以我需要相应地配置构建shell环境。

为了不在每次构建期间显示用户名和密码(可以在日志中看到,例如Jenkins),我试图在以下Dockerfile

中执行powershell脚本
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文件如下(基于thisthis

$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如何相关。

0 个答案:

没有答案