我写Dockerfile
基于windowsnanoserver。我需要添加到这个图像git。为了实现它,我做了以下几点:
RUN Invoke-WebRequest 'https://github.com/git-for-windows/git/releases/download/v2.12.2.windows.2/Git-2.12.2.2-64-bit.exe'
RUN Invoke-Expression "c:\Git-2.12.2.2-64-bit.exe"
但是当我通过docker build执行此行时,收到以下错误消息:
Invoke-Expression:术语'c:\ Git-2.12.2.2-64-bit.exe'不是 被识别为cmdlet,函数,脚本文件或可操作的名称 程序。检查名称的拼写,或者是否包含路径, 验证路径是否正确,然后重试。
我意识到此错误消息表明由于windows docker映像的控制台性质,我将无法执行GUI安装程序。不幸的是,git没有控制台安装程序。 Chocolatey在windowsservercore图片下工作正常,但在windowsnanoserver无效。为了安装windowsnanoserver的git,我想在chocolatey git installer Dockerfile
的{{1}}命令中重复这对我来说很好,但我仍然想知道有没有更简单的安装方法git on windowsnanoserver?
答案 0 :(得分:2)
通过使用MinGit并将有关mingit的信息放入环境/路径变量,我解决了GUI的问题。我使用了以下方法:
RUN Invoke-WebRequest 'https://github.com/git-for-windows/git/releases/download/v2.12.2.windows.2/MinGit-2.12.2.2-64-bit.zip' -OutFile MinGit.zip
RUN Expand-Archive c:\MinGit.zip -DestinationPath c:\MinGit; \
$env:PATH = $env:PATH + ';C:\MinGit\cmd\;C:\MinGit\cmd'; \
Set-ItemProperty -Path 'HKLM:\SYSTEM\CurrentControlSet\Control\Session Manager\Environment\' -Name Path -Value $env:PATH
答案 1 :(得分:1)
你是对的,Windows和Linux容器通常都专注于运行无头应用程序(即没有GUI)。
听起来你想根据具有git的nanoserver图像创建一个容器图像?
Chocolatey是一个好主意。
如果你给我更广泛的目标背景,我可以帮助你。
干杯:)
答案 2 :(得分:0)
您可以下载并使用Git Thumbdrive版本: https://git-scm.com/download/win
在以下位置查找链接:
适用于Windows Portable的Git(“ thumbdrive版”)
答案 3 :(得分:0)
使用参数/?调用git.setup.exe安装文件。列出所有可能的开关。
要运行静默安装: git.setup.exe / VERYSILENT / NORESTART / NOCANCEL / SP- / CLOSEAPPLICATIONS / RESTARTAPPLICATIONS
进行定制安装:
使用参数/ SAVEINF =“ filename”手动运行git安装
例如:。 git-2.xx.exe / SAVEINF =“文件名”
然后使用/ LOADINF =“ filename”
重复安装。例如:git.setup.exe / VERYSILENT / NORESTART / NOCANCEL / SP- / CLOSEAPPLICATIONS / RESTARTAPPLICATIONS / LOADINF =“文件名”
答案 4 :(得分:0)
根据@Mariusz 的回答,以下几行将 git 安装到 Windows 映像中
# copy inf file
COPY resources/git-install.inf c:\git-install.inf
# get Git install file
RUN Invoke-WebRequest 'https://github.com/git-for-windows/git/releases/download/v2.30.1.windows.1/Git-2.30.1-64-bit.exe' -OutFile 'git.exe'; `
# install Git
Start-Process "c:\git.exe" -ArgumentList '/SP-', '/VERYSILENT', '/NORESTART', '/NOCANCEL', '/CLOSEAPPLICATIONS', '/RESTARTAPPLICATIONS', '/LOADINF=git-install.inf' -Wait -NoNewWindow; `
# delete files
Remove-Item -Force git-install.inf; `
Remove-Item -Force git.exe;
答案 5 :(得分:0)
使用 Chocolatey 安装到 docker 镜像对我有用,如下图所示:ehong
我将这些行添加到我的 Dockerfile 中:
ENV ChocolateyUseWindowsCompression false
RUN powershell Set-ExecutionPolicy -ExecutionPolicy RemoteSigned -Force
RUN powershell -NoProfile -ExecutionPolicy Bypass -Command "iex ((New-Object System.Net.WebClient).DownloadString('https://chocolatey.org/install.ps1'))" && SET "PATH=%PATH%;%ALLUSERSPROFILE%\chocolatey\bin"
RUN choco install git.install -y --no-progress