Настройка git через файл докера Windows

Я пишу 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"

Но когда я выполняю эти строки через сборку докера, я получаю следующее сообщение об ошибке:

Invoke-Expression: Термин «c:\Git-2.12.2.2-64-bit.exe» не распознается как имя командлета, функции, файла сценария или исполняемой программы. Проверьте правильность написания имени или, если был указан путь, убедитесь, что путь указан правильно, и повторите попытку.

Я понимаю, что это сообщение об ошибке указывает на то, что из-за консольного характера образов докеров Windows я не смогу запускать установщики с графическим интерфейсом. К сожалению, у git нет установщика консоли. Chocolatey отлично работает с windowsservercore, но не работает на windowsnanoserver . Чтобы установить git для windowsnanoserver, у меня есть идея повторить в Dockerfile командах из < href="https://chocolatey.org/packages/git.install" rel="nofollow noreferrer">chocolatey git installer, который мне подходит, но все же я хотел бы знать, есть ли что-нибудь проще способ установить git на windowsnanoserver?


person Yuriy Zaletskyy    schedule 18.04.2017    source источник
comment
Просмотрите: stackoverflow.com/questions/36750554/   -  person Lawrence Patrick    schedule 14.12.2020


Ответы (6)


Я решил проблему с графическим интерфейсом, используя MinGit и помещая информацию о mingit в переменную окружения/пути. Я использовал следующий подход:

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
person Yuriy Zaletskyy    schedule 28.04.2017

Вы правы, контейнеры Windows и Linux обычно ориентированы на запуск безголовых приложений (т.е. без графического интерфейса).

Похоже, вы хотите создать образ контейнера на основе образа наносервера с git?

Шоколад - отличная идея.

Если вы дадите мне более широкий контекст ваших целей, я смогу помочь вам в дальнейшем.

Ваше здоровье :)

person Myles Keating    schedule 20.04.2017



Вызвать установочный файл git.setup.exe с параметрами /? перечислить все возможные переключатели.

Чтобы запустить автоматическую установку: git.setup.exe /VERYSILENT /NORESTART /NOCANCEL /SP- /CLOSEAPPLICATIONS /RESTARTAPPLICATIONS

Чтобы выполнить индивидуальную установку:

запустить установку git вручную с параметром /SAVEINF="имя_файла"

например:. git-2.xx.exe /SAVEINF="имя файла"

А потом повторить установку с /LOADINF="filename"

например: git.setup.exe /VERYSILENT /NORESTART /NOCANCEL /SP- /CLOSEAAPPLICATIONS /RESTARTAPPLICATIONS /LOADINF="имя файла"

Он задокументирован на: Git: Silent-or-Unattended- Установка

person Mariusz    schedule 25.10.2019

Основываясь на ответе @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;
person Illya Reznykov    schedule 25.02.2021