From 96dca4908e99185165b9c8eac285b14741233e92 Mon Sep 17 00:00:00 2001 From: Dongbo Wang Date: Thu, 12 Oct 2017 17:17:23 -0700 Subject: [PATCH 1/5] Update docker files --- .../InstallTarballPackage.sh | 44 ++++++++++ docker/release/amazonlinux/Dockerfile | 22 +++-- docker/release/fedora24/Dockerfile | 81 ------------------- docker/release/fedora25/Dockerfile | 43 ++++++++++ docker/release/fedora26/Dockerfile | 43 ++++++++++ docker/release/opensuse42.2/Dockerfile | 27 +++++-- 6 files changed, 166 insertions(+), 94 deletions(-) create mode 100644 docker/release/GenericLinuxFiles/InstallTarballPackage.sh delete mode 100644 docker/release/fedora24/Dockerfile create mode 100644 docker/release/fedora25/Dockerfile create mode 100644 docker/release/fedora26/Dockerfile diff --git a/docker/release/GenericLinuxFiles/InstallTarballPackage.sh b/docker/release/GenericLinuxFiles/InstallTarballPackage.sh new file mode 100644 index 00000000000..313b61d78e7 --- /dev/null +++ b/docker/release/GenericLinuxFiles/InstallTarballPackage.sh @@ -0,0 +1,44 @@ +#!/bin/sh + +# Exit on errors +set -e + +# +# Example use: +# ./InstallTarballPackage.sh "6.0.0-beta.8" "p@ssw0rd" +# +usage() { + echo "usage: $0 " + exit 1 +} + +POWERSHELL_VERSION=$1 +if [ ! "$POWERSHELL_VERSION" ] +then + usage +fi + +POWERSHELL_PACKAGE=$2 +if [ ! "$POWERSHELL_PACKAGE" ] +then + usage +fi + +POWERSHELL_LINKFILE=/usr/bin/powershell + +# Download the powershell .tar.gz package +curl -L -o /tmp/powershell.tar.gz https://github.com/daxian-dbw/PowerShell/releases/download/v$POWERSHELL_VERSION/$POWERSHELL_PACKAGE + +# Create the target folder where powershell will be placed +mkdir -p /opt/microsoft/powershell/$POWERSHELL_VERSION +# Expand powershell to the target folder +tar zxf /tmp/powershell.tar.gz -C /opt/microsoft/powershell/$POWERSHELL_VERSION + +# Create the symbolic link that points to powershell +ln -s /opt/microsoft/powershell/$POWERSHELL_VERSION/powershell $POWERSHELL_LINKFILE +# Add the symbolic link path to /etc/shells +if [ ! -f /etc/shells ] ; then + echo $POWERSHELL_LINKFILE > /etc/shells ; +else + grep -q "^${POWERSHELL_LINKFILE}$" /etc/shells || echo $POWERSHELL_LINKFILE >> /etc/shells ; +fi diff --git a/docker/release/amazonlinux/Dockerfile b/docker/release/amazonlinux/Dockerfile index 30f8039054e..b22b7ccf0a8 100644 --- a/docker/release/amazonlinux/Dockerfile +++ b/docker/release/amazonlinux/Dockerfile @@ -1,8 +1,9 @@ -# Docker image file that describes an Centos7 image with PowerShell installed from Microsoft YUM Repo +# Docker image file that describes an Amazon Linux image with PowerShell installed from PowerShell Release FROM amazonlinux:latest ARG POWERSHELL_VERSION=6.0.0-beta.8 +ARG POWERSHELL_PACKAGE=powershell-6.0.0-beta.8-linux-x64.tar.gz ARG IMAGE_NAME=microsoft/powershell:amazonlinux LABEL maintainer="PowerShell Team " \ @@ -30,15 +31,24 @@ RUN localedef --charmap=UTF-8 --inputfile=en_US $LANG # Install dependencies and clean up RUN yum install -y \ curl \ + libunwind \ + libicu \ + libcurl \ + openssl \ libuuid.x86_64 \ && yum clean all -# Download and configure Microsoft Repository config file -RUN curl https://packages.microsoft.com/config/rhel/7/prod.repo | tee /etc/yum.repos.d/microsoft.repo +# Get the InstallTarballPackage.sh script +ADD InstallTarballPackage.sh /InstallTarballPackage.sh -# Install latest powershell from Microsoft YUM Repo -RUN yum install -y \ - powershell +# Add execution permission +RUN chmod +x /InstallTarballPackage.sh + +# Install powershell from tarball package +RUN /InstallTarballPackage.sh $POWERSHELL_VERSION $POWERSHELL_PACKAGE + +# Remove the script +RUN rm -f /InstallTarballPackage.sh # Use PowerShell as the default shell # Use array to avoid Docker prepending /bin/sh -c diff --git a/docker/release/fedora24/Dockerfile b/docker/release/fedora24/Dockerfile deleted file mode 100644 index 4cf3008c8da..00000000000 --- a/docker/release/fedora24/Dockerfile +++ /dev/null @@ -1,81 +0,0 @@ -FROM fedora:24 - -# TODO: Until a release of PowerShell for Fedora 24 is available, -# this Dockerfile installs the CentOS 7 version for compatibility. - -ARG POWERSHELL_VERSION=6.0.0-beta.8 -ARG POWERSHELL_RELEASE=v6.0.0-beta.8 -ARG POWERSHELL_PACKAGE=powershell-6.0.0_beta.8-1.rhel.7.x86_64.rpm -ARG IMAGE_NAME=microsoft/powershell:fedora24 - -LABEL maintainer="PowerShell Team " \ - readme.md="https://github.com/PowerShell/PowerShell/blob/master/docker/README.md" \ - description="This Dockerfile will install the latest release of PS." \ - org.label-schema.usage="https://github.com/PowerShell/PowerShell/tree/master/docker#run-the-docker-image-you-built" \ - org.label-schema.url="https://github.com/PowerShell/PowerShell/blob/master/docker/README.md" \ - org.label-schema.vcs-url="https://github.com/PowerShell/PowerShell" \ - org.label-schema.name="powershell" \ - org.label-schema.vendor="PowerShell" \ - org.label-schema.version=${POWERSHELL_VERSION} \ - org.label-schema.schema-version="1.0" \ - org.label-schema.docker.cmd="docker run ${IMAGE_NAME} powershell -c '$psversiontable'" \ - org.label-schema.docker.cmd.devel="docker run ${IMAGE_NAME}" \ - org.label-schema.docker.cmd.test="docker run ${IMAGE_NAME} powershell -c Invoke-Pester" \ - org.label-schema.docker.cmd.help="docker run ${IMAGE_NAME} powershell -c Get-Help" - -# TODO: addd LABEL org.label-schema.vcs-ref=${VCS_REF} - -# The CentOS 7 release relies on an older version of libicu, so we'll be downloading it -# from the University of Kent (GB) mirror service. -ARG LIBICU50_SOURCE=https://www.mirrorservice.org/sites/mirror.centos.org/7.2.1511/os/x86_64/Packages -ARG LIBICU50_PACKAGE=libicu-50.1.2-15.el7.x86_64.rpm -ARG LIBICU50_PACKAGE_MD5=c3c1ebaabc8d1619377d535698784953 - -# Install the English language pack first - -RUN dnf install -y glibc glibc-langpack-en glibc-locale-source - -ENV LANG en_US.UTF-8 -ENV LC_ALL $LANG -RUN localedef --charmap=UTF-8 --inputfile=en_US $LANG - -# Disable Delta RPMS -RUN echo "deltarpm=False" >> /etc/dnf/dnf.conf - -# Install dependencies and clean up -RUN dnf install -y \ - libcurl \ - ca-certificates \ - libgcc \ - libicu \ - openssl \ - libstdc++ \ - ncurses-base \ - libunwind \ - uuid \ - zlib \ - which \ - curl \ - git \ - cpio \ - && dnf update -y \ - && dnf clean all - -# Install PowerShell package -RUN curl -SLO https://github.com/PowerShell/PowerShell/releases/download/$POWERSHELL_RELEASE/$POWERSHELL_PACKAGE \ - && dnf install -y $POWERSHELL_PACKAGE \ - && rm $POWERSHELL_PACKAGE - -# Once the next release of PowerShell is done, this libicu50 & LD_LIBRARY_PATH hackery can be dropped. -RUN curl -SLO ${LIBICU50_SOURCE}/${LIBICU50_PACKAGE} \ - && md5sum $LIBICU50_PACKAGE | grep $LIBICU50_PACKAGE_MD5 \ - && cd /opt/microsoft/powershell/$POWERSHELL_VERSION \ - && rpm2cpio /$LIBICU50_PACKAGE | cpio -idmv \ - && rm /$LIBICU50_PACKAGE - -# Append the old library to LD_LIBRARY_PATH - -ENV LD_LIBRARY_PATH /opt/microsoft/powershell/$POWERSHELL_VERSION/usr/lib64 - -# Use array to avoid Docker prepending /bin/sh -c -CMD [ "powershell" ] diff --git a/docker/release/fedora25/Dockerfile b/docker/release/fedora25/Dockerfile new file mode 100644 index 00000000000..a8010f9c4f9 --- /dev/null +++ b/docker/release/fedora25/Dockerfile @@ -0,0 +1,43 @@ +# Docker image file that describes an fedora 25 image with PowerShell installed from Microsoft YUM Repo + +FROM fedora:25 + +ARG POWERSHELL_VERSION=6.0.0-beta.8 +ARG IMAGE_NAME=microsoft/powershell:fedora25 + +LABEL maintainer="PowerShell Team " \ + readme.md="https://github.com/PowerShell/PowerShell/blob/master/docker/README.md" \ + description="This Dockerfile will install the latest release of PS." \ + org.label-schema.usage="https://github.com/PowerShell/PowerShell/tree/master/docker#run-the-docker-image-you-built" \ + org.label-schema.url="https://github.com/PowerShell/PowerShell/blob/master/docker/README.md" \ + org.label-schema.vcs-url="https://github.com/PowerShell/PowerShell" \ + org.label-schema.name="powershell" \ + org.label-schema.vendor="PowerShell" \ + org.label-schema.version=${POWERSHELL_VERSION} \ + org.label-schema.schema-version="1.0" \ + org.label-schema.docker.cmd="docker run ${IMAGE_NAME} powershell -c '$psversiontable'" \ + org.label-schema.docker.cmd.devel="docker run ${IMAGE_NAME}" \ + org.label-schema.docker.cmd.test="docker run ${IMAGE_NAME} powershell -c Invoke-Pester" \ + org.label-schema.docker.cmd.help="docker run ${IMAGE_NAME} powershell -c Get-Help" + +# TODO: addd LABEL org.label-schema.vcs-ref=${VCS_REF} + +# Install dependencies and clean up +RUN dnf install -y \ + curl \ + glibc-locale-source \ + && dnf clean all + +# Setup the locale +ENV LANG en_US.UTF-8 +ENV LC_ALL $LANG +RUN localedef --charmap=UTF-8 --inputfile=en_US $LANG + +# Download and configure Microsoft Repository config file +RUN curl https://packages.microsoft.com/config/rhel/7/prod.repo | tee /etc/yum.repos.d/microsoft.repo + +# Install latest powershell from Microsoft YUM Repo +RUN dnf install -y powershell + +# Use array to avoid Docker prepending /bin/sh -c +CMD [ "powershell" ] diff --git a/docker/release/fedora26/Dockerfile b/docker/release/fedora26/Dockerfile new file mode 100644 index 00000000000..db57ce3adf6 --- /dev/null +++ b/docker/release/fedora26/Dockerfile @@ -0,0 +1,43 @@ +# Docker image file that describes an fedora 25 image with PowerShell installed from Microsoft YUM Repo + +FROM fedora:26 + +ARG POWERSHELL_VERSION=6.0.0-beta.8 +ARG IMAGE_NAME=microsoft/powershell:fedora26 + +LABEL maintainer="PowerShell Team " \ + readme.md="https://github.com/PowerShell/PowerShell/blob/master/docker/README.md" \ + description="This Dockerfile will install the latest release of PS." \ + org.label-schema.usage="https://github.com/PowerShell/PowerShell/tree/master/docker#run-the-docker-image-you-built" \ + org.label-schema.url="https://github.com/PowerShell/PowerShell/blob/master/docker/README.md" \ + org.label-schema.vcs-url="https://github.com/PowerShell/PowerShell" \ + org.label-schema.name="powershell" \ + org.label-schema.vendor="PowerShell" \ + org.label-schema.version=${POWERSHELL_VERSION} \ + org.label-schema.schema-version="1.0" \ + org.label-schema.docker.cmd="docker run ${IMAGE_NAME} powershell -c '$psversiontable'" \ + org.label-schema.docker.cmd.devel="docker run ${IMAGE_NAME}" \ + org.label-schema.docker.cmd.test="docker run ${IMAGE_NAME} powershell -c Invoke-Pester" \ + org.label-schema.docker.cmd.help="docker run ${IMAGE_NAME} powershell -c Get-Help" + +# TODO: addd LABEL org.label-schema.vcs-ref=${VCS_REF} + +# Install dependencies and clean up +RUN dnf install -y \ + curl \ + glibc-locale-source \ + && dnf clean all + +# Setup the locale +ENV LANG en_US.UTF-8 +ENV LC_ALL $LANG +RUN localedef --charmap=UTF-8 --inputfile=en_US $LANG + +# Download and configure Microsoft Repository config file +RUN curl https://packages.microsoft.com/config/rhel/7/prod.repo | tee /etc/yum.repos.d/microsoft.repo + +# Install latest powershell from Microsoft YUM Repo +RUN dnf install -y powershell + +# Use array to avoid Docker prepending /bin/sh -c +CMD [ "powershell" ] diff --git a/docker/release/opensuse42.2/Dockerfile b/docker/release/opensuse42.2/Dockerfile index 7bb651c16f5..a987d92b559 100644 --- a/docker/release/opensuse42.2/Dockerfile +++ b/docker/release/opensuse42.2/Dockerfile @@ -1,10 +1,9 @@ -# Docker image file that describes an OpenSUSE 42.1 (AKA leap 42.1) image with PowerShell installed from PowerShell Release +# Docker image file that describes an OpenSUSE 42.2 image with PowerShell installed from PowerShell Release + FROM opensuse:42.2 -ARG POWERSHELL_VERSION=6.0.0_beta.8 -ARG POWERSHELL_RELEASE=v6.0.0-beta.8 -ARG FORK=PowerShell -ARG POWERSHELL_PACKAGE=powershell-6.0.0_beta.8-1.rhel.7.x86_64.rpm +ARG POWERSHELL_VERSION=6.0.0-beta.8 +ARG POWERSHELL_PACKAGE=powershell-6.0.0-beta.8-linux-x64.tar.gz ARG IMAGE_NAME=microsoft/powershell:opensuse42.2 LABEL maintainer="PowerShell Team " \ @@ -31,9 +30,11 @@ RUN zypper --non-interactive update --skip-interactive \ && zypper --non-interactive install \ glibc-locale \ glibc-i18ndata \ + tar \ curl \ - && rpm --import https://packages.microsoft.com/keys/microsoft.asc \ - && zypper --non-interactive install https://github.com/$FORK/PowerShell/releases/download/$POWERSHELL_RELEASE/$POWERSHELL_PACKAGE \ + libunwind \ + libicu \ + openssl \ && zypper --non-interactive clean --all # Setup the locale @@ -41,4 +42,16 @@ ENV LANG en_US.UTF-8 ENV LC_ALL $LANG RUN localedef --charmap=UTF-8 --inputfile=en_US $LANG +# Get the InstallTarballPackage.sh script +ADD InstallTarballPackage.sh /InstallTarballPackage.sh + +# Add execution permission +RUN chmod +x /InstallTarballPackage.sh + +# Install powershell from tarball package +RUN /InstallTarballPackage.sh $POWERSHELL_VERSION $POWERSHELL_PACKAGE + +# Remove the script +RUN rm -f /InstallTarballPackage.sh + CMD [ "powershell" ] From aaf4b7fb882aa45eb9befa57ef601ddd455b0429 Mon Sep 17 00:00:00 2001 From: Dongbo Wang Date: Thu, 12 Oct 2017 17:30:44 -0700 Subject: [PATCH 2/5] Move amazon linux docker file to 'community' folder --- docker/{release/GenericLinuxFiles => }/InstallTarballPackage.sh | 0 docker/{release => community}/amazonlinux/Dockerfile | 0 2 files changed, 0 insertions(+), 0 deletions(-) rename docker/{release/GenericLinuxFiles => }/InstallTarballPackage.sh (100%) rename docker/{release => community}/amazonlinux/Dockerfile (100%) diff --git a/docker/release/GenericLinuxFiles/InstallTarballPackage.sh b/docker/InstallTarballPackage.sh similarity index 100% rename from docker/release/GenericLinuxFiles/InstallTarballPackage.sh rename to docker/InstallTarballPackage.sh diff --git a/docker/release/amazonlinux/Dockerfile b/docker/community/amazonlinux/Dockerfile similarity index 100% rename from docker/release/amazonlinux/Dockerfile rename to docker/community/amazonlinux/Dockerfile From 6f5f437463ab1e8f0aa4066159c86ad147453ca5 Mon Sep 17 00:00:00 2001 From: Dongbo Wang Date: Thu, 12 Oct 2017 17:34:39 -0700 Subject: [PATCH 3/5] Use the right URL for 'ADD' instruction --- docker/community/amazonlinux/Dockerfile | 2 +- docker/release/opensuse42.2/Dockerfile | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/docker/community/amazonlinux/Dockerfile b/docker/community/amazonlinux/Dockerfile index b22b7ccf0a8..a18792047a7 100644 --- a/docker/community/amazonlinux/Dockerfile +++ b/docker/community/amazonlinux/Dockerfile @@ -39,7 +39,7 @@ RUN yum install -y \ && yum clean all # Get the InstallTarballPackage.sh script -ADD InstallTarballPackage.sh /InstallTarballPackage.sh +ADD https://raw.githubusercontent.com/PowerShell/PowerShell/master/docker/InstallTarballPackage.sh /InstallTarballPackage.sh # Add execution permission RUN chmod +x /InstallTarballPackage.sh diff --git a/docker/release/opensuse42.2/Dockerfile b/docker/release/opensuse42.2/Dockerfile index a987d92b559..ded9ba4824b 100644 --- a/docker/release/opensuse42.2/Dockerfile +++ b/docker/release/opensuse42.2/Dockerfile @@ -43,7 +43,7 @@ ENV LC_ALL $LANG RUN localedef --charmap=UTF-8 --inputfile=en_US $LANG # Get the InstallTarballPackage.sh script -ADD InstallTarballPackage.sh /InstallTarballPackage.sh +ADD https://raw.githubusercontent.com/PowerShell/PowerShell/master/docker/InstallTarballPackage.sh /InstallTarballPackage.sh # Add execution permission RUN chmod +x /InstallTarballPackage.sh From 2d73bd9990c427fc2a791626fc8f295c7eb77bae Mon Sep 17 00:00:00 2001 From: Dongbo Wang Date: Thu, 12 Oct 2017 17:36:59 -0700 Subject: [PATCH 4/5] Minor fix --- docker/InstallTarballPackage.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docker/InstallTarballPackage.sh b/docker/InstallTarballPackage.sh index 313b61d78e7..2ff2d46f095 100644 --- a/docker/InstallTarballPackage.sh +++ b/docker/InstallTarballPackage.sh @@ -27,7 +27,7 @@ fi POWERSHELL_LINKFILE=/usr/bin/powershell # Download the powershell .tar.gz package -curl -L -o /tmp/powershell.tar.gz https://github.com/daxian-dbw/PowerShell/releases/download/v$POWERSHELL_VERSION/$POWERSHELL_PACKAGE +curl -L -o /tmp/powershell.tar.gz https://github.com/PowerShell/PowerShell/releases/download/v$POWERSHELL_VERSION/$POWERSHELL_PACKAGE # Create the target folder where powershell will be placed mkdir -p /opt/microsoft/powershell/$POWERSHELL_VERSION From c07bb1cb657af9ffe312399879a99667c472b349 Mon Sep 17 00:00:00 2001 From: Dongbo Wang Date: Thu, 12 Oct 2017 17:44:34 -0700 Subject: [PATCH 5/5] Update comment in InstallTarballPackage.sh --- docker/InstallTarballPackage.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docker/InstallTarballPackage.sh b/docker/InstallTarballPackage.sh index 2ff2d46f095..90fcc6bbf5b 100644 --- a/docker/InstallTarballPackage.sh +++ b/docker/InstallTarballPackage.sh @@ -5,7 +5,7 @@ set -e # # Example use: -# ./InstallTarballPackage.sh "6.0.0-beta.8" "p@ssw0rd" +# ./InstallTarballPackage.sh "6.0.0-beta.8" "powershell-6.0.0-beta.8-linux-x64.tar.gz" # usage() { echo "usage: $0 "