Я использую PowerShell
в качестве оболочки по умолчанию в Dockerfile
для выполнения некоторых задач, таких как добавление новых пользователей и групп в мою сборку контейнера.
DockerFile (актуально)
SHELL ["powershell.exe", "-Command", "$ErrorActionPreference = 'Stop'; $ProgressPreference = 'Continue'; $verbosePreference='Continue';"]
RUN New-LocalUser -Name "testuser" -Password (ConvertTo-SecureString -AsPlainText "CrackPassword!" -Force) -FullName "Test.User" -Description "LocalAdministrator"
RUN Add-LocalGroupMember -Group administrators -Member testuser -Verbose
RUN "C:/Windows/Microsoft.NET/Framework64/v4.0.30319/InstallUtil.exe" /username=.\testuser /password=CrackPassword! /LogToConsole=true /ShowCallStack TestDockerService.exe
В том же DockerFile
я указываю CMD для запуска пакетного файла при запуске Docker container
.
COPY testbat.bat /testbat.bat
CMD testbat.bat && cmd
Изображение строится нормально, но Docker Run
не работает, жалуется:
At line:1 char:111
+ ... rence = 'Continue'; $verbosePreference='Continue'; testbat.bat && cmd
+ ~~
The token '&&' is not a valid statement separator in this version.
+ CategoryInfo : ParserError: (:) [], ParentContainsErrorRecordEx
ception
+ FullyQualifiedErrorId : InvalidEndOfLine
Я догадывался, что была проблема с запуском CMD внутри SHELL, и некоторые быстрые исследования показали, что это может быть так ...
Есть ли способ закрыть вызванный сеанс SHELL
или overrride
с помощью CMD во время выполнения?