mirror of
https://github.com/k3s-io/kubernetes.git
synced 2025-07-20 02:11:09 +00:00
52 lines
2.0 KiB
Plaintext
52 lines
2.0 KiB
Plaintext
# Copyright 2020 The Kubernetes Authors.
|
|
#
|
|
# Licensed under the Apache License, Version 2.0 (the "License");
|
|
# you may not use this file except in compliance with the License.
|
|
# You may obtain a copy of the License at
|
|
#
|
|
# http://www.apache.org/licenses/LICENSE-2.0
|
|
#
|
|
# Unless required by applicable law or agreed to in writing, software
|
|
# distributed under the License is distributed on an "AS IS" BASIS,
|
|
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
# See the License for the specific language governing permissions and
|
|
# limitations under the License.
|
|
|
|
FROM mcr.microsoft.com/windows/servercore:ltsc2019 as prep
|
|
|
|
ENV PS_VERSION=6.2.7
|
|
ADD https://github.com/PowerShell/PowerShell/releases/download/v$PS_VERSION/PowerShell-$PS_VERSION-win-x64.zip /PowerShell/powershell.zip
|
|
|
|
RUN cd C:\PowerShell &\
|
|
tar.exe -xf powershell.zip &\
|
|
del powershell.zip &\
|
|
mklink powershell.exe pwsh.exe
|
|
|
|
FROM mcr.microsoft.com/windows/nanoserver:1809
|
|
|
|
COPY --from=prep /PowerShell /PowerShell
|
|
|
|
# set a fixed location for the Module analysis cache
|
|
ENV LOCALAPPDATA="C:\Users\ContainerAdministrator\AppData\Local" \
|
|
PSModuleAnalysisCachePath="C:\Users\ContainerAdministrator\AppData\Local\Microsoft\Windows\PowerShell\docker\ModuleAnalysisCache" \
|
|
# Persist %PSCORE% ENV variable for user convenience
|
|
PSCORE="C:\PowerShell\pwsh.exe"
|
|
|
|
# use downloaded powershell
|
|
USER ContainerAdministrator
|
|
RUN setx /M PATH "C:\Powershell\;%PATH%"
|
|
|
|
# initialize powershell module cache
|
|
RUN powershell \
|
|
-NoLogo \
|
|
-NoProfile \
|
|
-Command " \
|
|
$stopTime = (get-date).AddMinutes(15); \
|
|
$ErrorActionPreference = 'Stop' ; \
|
|
$ProgressPreference = 'SilentlyContinue' ; \
|
|
while(!(Test-Path -Path $env:PSModuleAnalysisCachePath)) { \
|
|
Write-Host "'Waiting for $env:PSModuleAnalysisCachePath'" ; \
|
|
if((get-date) -gt $stopTime) { throw 'timout expired'} \
|
|
Start-Sleep -Seconds 6 ; \
|
|
}"
|