diff --git a/docker/README.md b/docker/README.md index 7618931b80..d43977be40 100644 --- a/docker/README.md +++ b/docker/README.md @@ -99,7 +99,7 @@ Successfully built ee667ad86a7b ### Run the docker image you built ```sh -PS /powershell/docker/release/ubuntu16.04> docker run -it ps-ubuntu.16.04 '$psversiontable' +PS /powershell/docker/release/ubuntu16.04> docker run -it ps-ubuntu.16.04 powershell -c '$psversiontable' Name Value ---- ----- diff --git a/docker/release/centos7/Dockerfile b/docker/release/centos7/Dockerfile index 57205e245c..c7eaa0af57 100644 --- a/docker/release/centos7/Dockerfile +++ b/docker/release/centos7/Dockerfile @@ -25,4 +25,4 @@ RUN yum install -y \ # Use PowerShell as the default shell # Use array to avoid Docker prepending /bin/sh -c -ENTRYPOINT [ "powershell" ] \ No newline at end of file +CMD [ "powershell" ] diff --git a/docker/release/fedora24/Dockerfile b/docker/release/fedora24/Dockerfile index 309c5adbf9..1c298a6a39 100644 --- a/docker/release/fedora24/Dockerfile +++ b/docker/release/fedora24/Dockerfile @@ -63,4 +63,4 @@ RUN curl -SLO ${LIBICU50_SOURCE}/${LIBICU50_PACKAGE} \ ENV LD_LIBRARY_PATH /opt/microsoft/powershell/$POWERSHELL_VERSION/usr/lib64 # Use array to avoid Docker prepending /bin/sh -c -ENTRYPOINT [ "powershell" ] +CMD [ "powershell" ] diff --git a/docker/release/nanoserver-insider/Dockerfile b/docker/release/nanoserver-insider/Dockerfile new file mode 100755 index 0000000000..01c194add0 --- /dev/null +++ b/docker/release/nanoserver-insider/Dockerfile @@ -0,0 +1,43 @@ +# escape=` +# Args used by from statements must be defined here: +ARG NanoServerVersion=10.0.16237.1001 +ARG WindowsServerCoreVersion=10.0.16237.1001 +ARG WindowsServerCoreRepo=microsoft/windowsservercore-insider +ARG NanoServerRepo=microsoft/nanoserver-insider + +# Use server core as an installer container to extract PowerShell, +# As this is a multi-stage build, this stage will eventually be thrown away +FROM ${WindowsServerCoreRepo}:$WindowsServerCoreVersion AS installer-env + +# Arguments for installing powershell, must be defined in the container they are used +ARG PS_VERSION=6.0.0-beta.3 +ARG PS_DOWNLOAD_SHA=FF45FE7D184B50297CA706EFAEA4E37C59807D33577521A715C147BCD5098B01 + +ENV PS_DOWNLOAD_URL https://github.com/PowerShell/PowerShell/releases/download/v$PS_VERSION/PowerShell-$PS_VERSION-win10-win2016-x64.zip + +SHELL ["powershell", "-Command", "$ErrorActionPreference = 'Stop'; $ProgressPreference = 'SilentlyContinue';"] +RUN Invoke-WebRequest $Env:PS_DOWNLOAD_URL -OutFile powershell.zip +RUN if ((Get-FileHash powershell.zip -Algorithm sha256).Hash -ne $Env:PS_DOWNLOAD_SHA) { ` + Write-Host 'CHECKSUM VERIFICATION FAILED!'; ` + exit 1; ` + } + +RUN Expand-Archive powershell.zip -DestinationPath \PowerShell + +# Install PowerShell into NanoServer +FROM ${NanoServerRepo}:$NanoServerVersion +LABEL maintainer="PowerShell Team " +LABEL readme.md="https://github.com/PowerShell/PowerShell/blob/master/docker/README.md" +LABEL description="This Dockerfile will install the latest release of PS." + +# Copy Powershell from the installer containter +ENV ProgramFiles C:\Program Files +COPY --from=installer-env ["\\PowerShell\\", "$ProgramFiles\\PowerShell"] + +# Persist %PSCORE% ENV variable for user convenience +ENV PSCORE="$ProgramFiles\PowerShell\PowerShell.exe" + +# setx /M fails on nanoserver-insider, setting the user path +RUN setx PATH "%PATH%;%ProgramFiles%\PowerShell" + +CMD ["C:\\Program Files\\PowerShell\\PowerShell.exe"] diff --git a/docker/release/nanoserver/Dockerfile b/docker/release/nanoserver/Dockerfile index 400cc95b72..e272339091 100644 --- a/docker/release/nanoserver/Dockerfile +++ b/docker/release/nanoserver/Dockerfile @@ -7,6 +7,7 @@ LABEL description="This Dockerfile will install the latest release of PS." ARG POWERSHELL_ZIP=https://github.com/PowerShell/PowerShell/releases/download/v6.0.0-beta.3/PowerShell-6.0.0-beta.3-win10-win2016-x64.zip +RUN setx /M PATH "%PATH%;%ProgramFiles%\PowerShell" # Setup PowerShell - Log-to > C:\Docker.log SHELL ["C:\\Windows\\System32\\WindowsPowerShell\\v1.0\\powershell.exe", "-command"] ADD $POWERSHELL_ZIP /powershell-win10-x64.zip @@ -42,4 +43,4 @@ RUN Start-Transcript -path C:\Dockerfile.log -append -IncludeInvocationHeader ; # Persist %PSCORE% ENV variable for user convenience ENV PSCORE='"C:\Program Files\PowerShell\latest\PowerShell.exe"' -ENTRYPOINT ["C:\\Program Files\\PowerShell\\latest\\PowerShell.exe"] +CMD ["C:\\Program Files\\PowerShell\\latest\\PowerShell.exe"] diff --git a/docker/release/opensuse13.2/Dockerfile b/docker/release/opensuse13.2/Dockerfile deleted file mode 100644 index e69de29bb2..0000000000 diff --git a/docker/release/opensuse42.1/Dockerfile b/docker/release/opensuse42.1/Dockerfile index d0dbbaeadf..afc0d658fd 100644 --- a/docker/release/opensuse42.1/Dockerfile +++ b/docker/release/opensuse42.1/Dockerfile @@ -27,4 +27,4 @@ ENV LANG en_US.UTF-8 ENV LC_ALL $LANG RUN localedef --charmap=UTF-8 --inputfile=en_US $LANG -ENTRYPOINT [ "powershell" ] +CMD [ "powershell" ] diff --git a/docker/release/ubuntu14.04/Dockerfile b/docker/release/ubuntu14.04/Dockerfile index 127e16cc64..9e7164aabd 100644 --- a/docker/release/ubuntu14.04/Dockerfile +++ b/docker/release/ubuntu14.04/Dockerfile @@ -33,4 +33,4 @@ RUN apt-get update \ # Use PowerShell as the default shell # Use array to avoid Docker prepending /bin/sh -c -ENTRYPOINT [ "powershell" ] \ No newline at end of file +CMD [ "powershell" ] diff --git a/docker/release/ubuntu16.04/Dockerfile b/docker/release/ubuntu16.04/Dockerfile index 4273166ea8..b5c0882fc2 100644 --- a/docker/release/ubuntu16.04/Dockerfile +++ b/docker/release/ubuntu16.04/Dockerfile @@ -34,4 +34,4 @@ RUN apt-get update \ # Use PowerShell as the default shell # Use array to avoid Docker prepending /bin/sh -c -ENTRYPOINT [ "powershell" ] \ No newline at end of file +CMD [ "powershell" ] diff --git a/docker/release/windowsservercore/Dockerfile b/docker/release/windowsservercore/Dockerfile index 752f7fcf80..84c4ff3f71 100644 --- a/docker/release/windowsservercore/Dockerfile +++ b/docker/release/windowsservercore/Dockerfile @@ -7,6 +7,7 @@ LABEL description="This Dockerfile will install the latest release of PS." ARG POWERSHELL_MSI=https://github.com/PowerShell/PowerShell/releases/download/v6.0.0-beta.3/PowerShell-6.0.0-beta.3-win10-win2016-x64.msi +RUN setx /M PATH "%PATH%;%ProgramFiles%\PowerShell" # Setup PowerShell - Log-to > C:\Docker.log SHELL ["C:\\Windows\\System32\\WindowsPowerShell\\v1.0\\powershell.exe", "-command"] ADD $POWERSHELL_MSI /PowerShell-win10-x64.msi @@ -42,4 +43,4 @@ RUN Start-Transcript -path C:\Dockerfile.log -append -IncludeInvocationHeader ; # Persist %PSCORE% ENV variable for user convenience ENV PSCORE='"C:\Program Files\PowerShell\latest\PowerShell.exe"' -ENTRYPOINT ["C:\\Program Files\\PowerShell\\latest\\PowerShell.exe"] +CMD ["C:\\Program Files\\PowerShell\\latest\\PowerShell.exe"]