diff --git a/.travis.yml b/.travis.yml index 321f6ec0..926437e6 100644 --- a/.travis.yml +++ b/.travis.yml @@ -2,8 +2,12 @@ language: bash services: docker env: + - VERSION=12 VARIANT=oracle + - VERSION=12 VARIANT=alpine + - VERSION=11 VARIANT=oracle - VERSION=11 - VERSION=11 VARIANT=slim + - VERSION=10 VARIANT=oracle - VERSION=10 - VERSION=10 VARIANT=slim - VERSION=8 @@ -27,9 +31,12 @@ script: ( set -Eeuo pipefail set -x - travis_retry docker build -t "$imageBase-jdk$imageSuffix" "jdk${VARIANT:+/$VARIANT}" - travis_retry docker build -t "$imageBase-jre$imageSuffix" "jre${VARIANT:+/$VARIANT}" - ~/official-images/test/run.sh "$imageBase-jdk$imageSuffix" "$imageBase-jre$imageSuffix" + docker build -t "$imageBase-jdk$imageSuffix" "jdk${VARIANT:+/$VARIANT}" + ~/official-images/test/run.sh "$imageBase-jdk$imageSuffix" + if [ -d "jre${VARIANT:+/$VARIANT}" ]; then + docker build -t "$imageBase-jre$imageSuffix" "jre${VARIANT:+/$VARIANT}" + ~/official-images/test/run.sh "$imageBase-jre$imageSuffix" + fi ) after_script: diff --git a/10/jdk/oracle/Dockerfile b/10/jdk/oracle/Dockerfile new file mode 100644 index 00000000..e9127d9a --- /dev/null +++ b/10/jdk/oracle/Dockerfile @@ -0,0 +1,54 @@ +FROM oraclelinux:7-slim + +RUN set -eux; \ + yum install -y \ + gzip \ + tar \ + \ +# java.lang.UnsatisfiedLinkError: /usr/java/openjdk-12/lib/libfontmanager.so: libfreetype.so.6: cannot open shared object file: No such file or directory +# https://github.com/docker-library/openjdk/pull/235#issuecomment-424466077 + freetype fontconfig \ + ; \ + rm -rf /var/cache/yum + +# Default to UTF-8 file.encoding +#ENV LANG C.UTF-8 +# TODO oraclelinux doesn't have C.UTF-8 by default?? + +ENV JAVA_HOME /usr/java/openjdk-10 +ENV PATH $JAVA_HOME/bin:$PATH + +# http://jdk.java.net/ +ENV JAVA_VERSION 10.0.2 +ENV JAVA_URL https://download.java.net/java/GA/jdk10/10.0.2/19aef61b38124481863b1413dce1855f/13/openjdk-10.0.2_linux-x64_bin.tar.gz +ENV JAVA_SHA256 f3b26abc9990a0b8929781310e14a339a7542adfd6596afb842fa0dd7e3848b2 + +RUN set -eux; \ + \ + curl -fL -o /openjdk.tgz "$JAVA_URL"; \ + echo "$JAVA_SHA256 */openjdk.tgz" | sha256sum -c -; \ + mkdir -p "$JAVA_HOME"; \ + tar --extract --file /openjdk.tgz --directory "$JAVA_HOME" --strip-components 1; \ + rm /openjdk.tgz; \ + \ +# https://github.com/oracle/docker-images/blob/a56e0d1ed968ff669d2e2ba8a1483d0f3acc80c0/OracleJava/java-8/Dockerfile#L17-L19 + ln -sfT "$JAVA_HOME" /usr/java/default; \ + ln -sfT "$JAVA_HOME" /usr/java/latest; \ + for bin in "$JAVA_HOME/bin/"*; do \ + base="$(basename "$bin")"; \ + [ ! -e "/usr/bin/$base" ]; \ + alternatives --install "/usr/bin/$base" "$base" "$bin" 20000; \ + done; \ + \ +# https://github.com/docker-library/openjdk/issues/212#issuecomment-420979840 +# http://openjdk.java.net/jeps/341 + java -Xshare:dump; \ + \ +# basic smoke test + java --version; \ + javac --version + +# https://docs.oracle.com/javase/10/tools/jshell.htm +# https://docs.oracle.com/javase/10/jshell/ +# https://en.wikipedia.org/wiki/JShell +CMD ["jshell"] diff --git a/10/jdk/windows/nanoserver-sac2016/Dockerfile b/10/jdk/windows/nanoserver-sac2016/Dockerfile index c24eb2ed..4df95713 100644 --- a/10/jdk/windows/nanoserver-sac2016/Dockerfile +++ b/10/jdk/windows/nanoserver-sac2016/Dockerfile @@ -47,8 +47,8 @@ RUN $url = ('https://github.com/ojdkbuild/ojdkbuild/releases/download/{0}/{1}' - ; \ \ Write-Host 'Verifying install ...'; \ - Write-Host ' java -version'; java -version; \ - Write-Host ' javac -version'; javac -version; \ + Write-Host ' java --version'; java --version; \ + Write-Host ' javac --version'; javac --version; \ \ Write-Host 'Removing ...'; \ Remove-Item ojdkbuild.zip -Force; \ diff --git a/10/jdk/windows/windowsservercore-1709/Dockerfile b/10/jdk/windows/windowsservercore-1709/Dockerfile index 1c65e9f3..f178b973 100644 --- a/10/jdk/windows/windowsservercore-1709/Dockerfile +++ b/10/jdk/windows/windowsservercore-1709/Dockerfile @@ -35,8 +35,8 @@ RUN $url = ('https://github.com/ojdkbuild/ojdkbuild/releases/download/{0}/{1}' - ; \ \ Write-Host 'Verifying install ...'; \ - Write-Host ' java -version'; java -version; \ - Write-Host ' javac -version'; javac -version; \ + Write-Host ' java --version'; java --version; \ + Write-Host ' javac --version'; javac --version; \ \ Write-Host 'Removing ...'; \ Remove-Item ojdkbuild.zip -Force; \ diff --git a/10/jdk/windows/windowsservercore-ltsc2016/Dockerfile b/10/jdk/windows/windowsservercore-ltsc2016/Dockerfile index 2ea22207..c131bdc4 100644 --- a/10/jdk/windows/windowsservercore-ltsc2016/Dockerfile +++ b/10/jdk/windows/windowsservercore-ltsc2016/Dockerfile @@ -35,8 +35,8 @@ RUN $url = ('https://github.com/ojdkbuild/ojdkbuild/releases/download/{0}/{1}' - ; \ \ Write-Host 'Verifying install ...'; \ - Write-Host ' java -version'; java -version; \ - Write-Host ' javac -version'; javac -version; \ + Write-Host ' java --version'; java --version; \ + Write-Host ' javac --version'; javac --version; \ \ Write-Host 'Removing ...'; \ Remove-Item ojdkbuild.zip -Force; \ diff --git a/11/jdk/oracle/Dockerfile b/11/jdk/oracle/Dockerfile new file mode 100644 index 00000000..10846338 --- /dev/null +++ b/11/jdk/oracle/Dockerfile @@ -0,0 +1,54 @@ +FROM oraclelinux:7-slim + +RUN set -eux; \ + yum install -y \ + gzip \ + tar \ + \ +# java.lang.UnsatisfiedLinkError: /usr/java/openjdk-12/lib/libfontmanager.so: libfreetype.so.6: cannot open shared object file: No such file or directory +# https://github.com/docker-library/openjdk/pull/235#issuecomment-424466077 + freetype fontconfig \ + ; \ + rm -rf /var/cache/yum + +# Default to UTF-8 file.encoding +#ENV LANG C.UTF-8 +# TODO oraclelinux doesn't have C.UTF-8 by default?? + +ENV JAVA_HOME /usr/java/openjdk-11 +ENV PATH $JAVA_HOME/bin:$PATH + +# http://jdk.java.net/ +ENV JAVA_VERSION 11 +ENV JAVA_URL https://download.java.net/java/ga/jdk11/openjdk-11_linux-x64_bin.tar.gz +ENV JAVA_SHA256 3784cfc4670f0d4c5482604c7c513beb1a92b005f569df9bf100e8bef6610f2e + +RUN set -eux; \ + \ + curl -fL -o /openjdk.tgz "$JAVA_URL"; \ + echo "$JAVA_SHA256 */openjdk.tgz" | sha256sum -c -; \ + mkdir -p "$JAVA_HOME"; \ + tar --extract --file /openjdk.tgz --directory "$JAVA_HOME" --strip-components 1; \ + rm /openjdk.tgz; \ + \ +# https://github.com/oracle/docker-images/blob/a56e0d1ed968ff669d2e2ba8a1483d0f3acc80c0/OracleJava/java-8/Dockerfile#L17-L19 + ln -sfT "$JAVA_HOME" /usr/java/default; \ + ln -sfT "$JAVA_HOME" /usr/java/latest; \ + for bin in "$JAVA_HOME/bin/"*; do \ + base="$(basename "$bin")"; \ + [ ! -e "/usr/bin/$base" ]; \ + alternatives --install "/usr/bin/$base" "$base" "$bin" 20000; \ + done; \ + \ +# https://github.com/docker-library/openjdk/issues/212#issuecomment-420979840 +# http://openjdk.java.net/jeps/341 + java -Xshare:dump; \ + \ +# basic smoke test + java --version; \ + javac --version + +# https://docs.oracle.com/javase/10/tools/jshell.htm +# https://docs.oracle.com/javase/10/jshell/ +# https://en.wikipedia.org/wiki/JShell +CMD ["jshell"] diff --git a/11/jdk/windows/windowsservercore-1709/Dockerfile b/11/jdk/windows/windowsservercore-1709/Dockerfile index 07d95518..04c22fca 100644 --- a/11/jdk/windows/windowsservercore-1709/Dockerfile +++ b/11/jdk/windows/windowsservercore-1709/Dockerfile @@ -3,7 +3,7 @@ FROM microsoft/windowsservercore:1709 # $ProgressPreference: https://github.com/PowerShell/PowerShell/issues/2138#issuecomment-251261324 SHELL ["powershell", "-Command", "$ErrorActionPreference = 'Stop'; $ProgressPreference = 'SilentlyContinue';"] -ENV JAVA_HOME C:\\jdk-11 +ENV JAVA_HOME C:\\openjdk-11 RUN $newPath = ('{0}\bin;{1}' -f $env:JAVA_HOME, $env:PATH); \ Write-Host ('Updating PATH: {0}' -f $newPath); \ # Nano Server does not have "[Environment]::SetEnvironmentVariable()" @@ -11,7 +11,7 @@ RUN $newPath = ('{0}\bin;{1}' -f $env:JAVA_HOME, $env:PATH); \ # http://jdk.java.net/ ENV JAVA_VERSION 11 -ENV JAVA_URL https://download.java.net/java/GA/jdk11/28/GPL/openjdk-11+28_windows-x64_bin.zip +ENV JAVA_URL https://download.java.net/java/ga/jdk11/openjdk-11_windows-x64_bin.zip ENV JAVA_SHA256 fde3b28ca31b86a889c37528f17411cd0b9651beb6fa76cac89a223417910f4b RUN Write-Host ('Downloading {0} ...' -f $env:JAVA_URL); \ @@ -24,11 +24,14 @@ RUN Write-Host ('Downloading {0} ...' -f $env:JAVA_URL); \ }; \ \ Write-Host 'Expanding ...'; \ - Expand-Archive openjdk.zip -DestinationPath C:\; \ + New-Item -ItemType Directory -Path C:\temp | Out-Null; \ + Expand-Archive openjdk.zip -DestinationPath C:\temp; \ + Move-Item -Path C:\temp\* -Destination $env:JAVA_HOME; \ + Remove-Item C:\temp; \ \ Write-Host 'Verifying install ...'; \ - Write-Host ' java -version'; java -version; \ - Write-Host ' javac -version'; javac -version; \ + Write-Host ' java --version'; java --version; \ + Write-Host ' javac --version'; javac --version; \ \ Write-Host 'Removing ...'; \ Remove-Item openjdk.zip -Force; \ diff --git a/11/jdk/windows/windowsservercore-1803/Dockerfile b/11/jdk/windows/windowsservercore-1803/Dockerfile index c91ecdc7..28214d3e 100644 --- a/11/jdk/windows/windowsservercore-1803/Dockerfile +++ b/11/jdk/windows/windowsservercore-1803/Dockerfile @@ -3,7 +3,7 @@ FROM microsoft/windowsservercore:1803 # $ProgressPreference: https://github.com/PowerShell/PowerShell/issues/2138#issuecomment-251261324 SHELL ["powershell", "-Command", "$ErrorActionPreference = 'Stop'; $ProgressPreference = 'SilentlyContinue';"] -ENV JAVA_HOME C:\\jdk-11 +ENV JAVA_HOME C:\\openjdk-11 RUN $newPath = ('{0}\bin;{1}' -f $env:JAVA_HOME, $env:PATH); \ Write-Host ('Updating PATH: {0}' -f $newPath); \ # Nano Server does not have "[Environment]::SetEnvironmentVariable()" @@ -11,7 +11,7 @@ RUN $newPath = ('{0}\bin;{1}' -f $env:JAVA_HOME, $env:PATH); \ # http://jdk.java.net/ ENV JAVA_VERSION 11 -ENV JAVA_URL https://download.java.net/java/GA/jdk11/28/GPL/openjdk-11+28_windows-x64_bin.zip +ENV JAVA_URL https://download.java.net/java/ga/jdk11/openjdk-11_windows-x64_bin.zip ENV JAVA_SHA256 fde3b28ca31b86a889c37528f17411cd0b9651beb6fa76cac89a223417910f4b RUN Write-Host ('Downloading {0} ...' -f $env:JAVA_URL); \ @@ -24,11 +24,14 @@ RUN Write-Host ('Downloading {0} ...' -f $env:JAVA_URL); \ }; \ \ Write-Host 'Expanding ...'; \ - Expand-Archive openjdk.zip -DestinationPath C:\; \ + New-Item -ItemType Directory -Path C:\temp | Out-Null; \ + Expand-Archive openjdk.zip -DestinationPath C:\temp; \ + Move-Item -Path C:\temp\* -Destination $env:JAVA_HOME; \ + Remove-Item C:\temp; \ \ Write-Host 'Verifying install ...'; \ - Write-Host ' java -version'; java -version; \ - Write-Host ' javac -version'; javac -version; \ + Write-Host ' java --version'; java --version; \ + Write-Host ' javac --version'; javac --version; \ \ Write-Host 'Removing ...'; \ Remove-Item openjdk.zip -Force; \ diff --git a/11/jdk/windows/windowsservercore-ltsc2016/Dockerfile b/11/jdk/windows/windowsservercore-ltsc2016/Dockerfile index 491e00ee..52a5581e 100644 --- a/11/jdk/windows/windowsservercore-ltsc2016/Dockerfile +++ b/11/jdk/windows/windowsservercore-ltsc2016/Dockerfile @@ -3,7 +3,7 @@ FROM microsoft/windowsservercore:ltsc2016 # $ProgressPreference: https://github.com/PowerShell/PowerShell/issues/2138#issuecomment-251261324 SHELL ["powershell", "-Command", "$ErrorActionPreference = 'Stop'; $ProgressPreference = 'SilentlyContinue';"] -ENV JAVA_HOME C:\\jdk-11 +ENV JAVA_HOME C:\\openjdk-11 RUN $newPath = ('{0}\bin;{1}' -f $env:JAVA_HOME, $env:PATH); \ Write-Host ('Updating PATH: {0}' -f $newPath); \ # Nano Server does not have "[Environment]::SetEnvironmentVariable()" @@ -11,7 +11,7 @@ RUN $newPath = ('{0}\bin;{1}' -f $env:JAVA_HOME, $env:PATH); \ # http://jdk.java.net/ ENV JAVA_VERSION 11 -ENV JAVA_URL https://download.java.net/java/GA/jdk11/28/GPL/openjdk-11+28_windows-x64_bin.zip +ENV JAVA_URL https://download.java.net/java/ga/jdk11/openjdk-11_windows-x64_bin.zip ENV JAVA_SHA256 fde3b28ca31b86a889c37528f17411cd0b9651beb6fa76cac89a223417910f4b RUN Write-Host ('Downloading {0} ...' -f $env:JAVA_URL); \ @@ -24,11 +24,14 @@ RUN Write-Host ('Downloading {0} ...' -f $env:JAVA_URL); \ }; \ \ Write-Host 'Expanding ...'; \ - Expand-Archive openjdk.zip -DestinationPath C:\; \ + New-Item -ItemType Directory -Path C:\temp | Out-Null; \ + Expand-Archive openjdk.zip -DestinationPath C:\temp; \ + Move-Item -Path C:\temp\* -Destination $env:JAVA_HOME; \ + Remove-Item C:\temp; \ \ Write-Host 'Verifying install ...'; \ - Write-Host ' java -version'; java -version; \ - Write-Host ' javac -version'; javac -version; \ + Write-Host ' java --version'; java --version; \ + Write-Host ' javac --version'; javac --version; \ \ Write-Host 'Removing ...'; \ Remove-Item openjdk.zip -Force; \ diff --git a/12/jdk/alpine/Dockerfile b/12/jdk/alpine/Dockerfile new file mode 100644 index 00000000..3846bb01 --- /dev/null +++ b/12/jdk/alpine/Dockerfile @@ -0,0 +1,31 @@ +FROM alpine:3.8 + +ENV JAVA_HOME /opt/openjdk-12 +ENV PATH $JAVA_HOME/bin:$PATH + +# http://jdk.java.net/ +ENV JAVA_VERSION 12-ea+12 +ENV JAVA_URL https://download.java.net/java/early_access/alpine/12/binaries/openjdk-12-ea+12_linux-x64-musl_bin.tar.gz +ENV JAVA_SHA256 36729ff2deec675c87fefbee47b805ad1555192f424ca4debeb81f30eb1bf587 +# "For Alpine Linux, builds are produced on a reduced schedule and may not be in sync with the other platforms." + +RUN set -eux; \ + \ + wget -O /openjdk.tgz "$JAVA_URL"; \ + echo "$JAVA_SHA256 */openjdk.tgz" | sha256sum -c -; \ + mkdir -p "$JAVA_HOME"; \ + tar --extract --file /openjdk.tgz --directory "$JAVA_HOME" --strip-components 1; \ + rm /openjdk.tgz; \ + \ +# https://github.com/docker-library/openjdk/issues/212#issuecomment-420979840 +# http://openjdk.java.net/jeps/341 + java -Xshare:dump; \ + \ +# basic smoke test + java --version; \ + javac --version + +# https://docs.oracle.com/javase/10/tools/jshell.htm +# https://docs.oracle.com/javase/10/jshell/ +# https://en.wikipedia.org/wiki/JShell +CMD ["jshell"] diff --git a/12/jdk/oracle/Dockerfile b/12/jdk/oracle/Dockerfile new file mode 100644 index 00000000..b177a0ec --- /dev/null +++ b/12/jdk/oracle/Dockerfile @@ -0,0 +1,54 @@ +FROM oraclelinux:7-slim + +RUN set -eux; \ + yum install -y \ + gzip \ + tar \ + \ +# java.lang.UnsatisfiedLinkError: /usr/java/openjdk-12/lib/libfontmanager.so: libfreetype.so.6: cannot open shared object file: No such file or directory +# https://github.com/docker-library/openjdk/pull/235#issuecomment-424466077 + freetype fontconfig \ + ; \ + rm -rf /var/cache/yum + +# Default to UTF-8 file.encoding +#ENV LANG C.UTF-8 +# TODO oraclelinux doesn't have C.UTF-8 by default?? + +ENV JAVA_HOME /usr/java/openjdk-12 +ENV PATH $JAVA_HOME/bin:$PATH + +# http://jdk.java.net/ +ENV JAVA_VERSION 12-ea+13 +ENV JAVA_URL https://download.java.net/java/early_access/jdk12/13/GPL/openjdk-12-ea+13_linux-x64_bin.tar.gz +ENV JAVA_SHA256 555b0518f1ada185f1d1b77c79cb6f7a62ed17722cd754223bf92ad617f3c330 + +RUN set -eux; \ + \ + curl -fL -o /openjdk.tgz "$JAVA_URL"; \ + echo "$JAVA_SHA256 */openjdk.tgz" | sha256sum -c -; \ + mkdir -p "$JAVA_HOME"; \ + tar --extract --file /openjdk.tgz --directory "$JAVA_HOME" --strip-components 1; \ + rm /openjdk.tgz; \ + \ +# https://github.com/oracle/docker-images/blob/a56e0d1ed968ff669d2e2ba8a1483d0f3acc80c0/OracleJava/java-8/Dockerfile#L17-L19 + ln -sfT "$JAVA_HOME" /usr/java/default; \ + ln -sfT "$JAVA_HOME" /usr/java/latest; \ + for bin in "$JAVA_HOME/bin/"*; do \ + base="$(basename "$bin")"; \ + [ ! -e "/usr/bin/$base" ]; \ + alternatives --install "/usr/bin/$base" "$base" "$bin" 20000; \ + done; \ + \ +# https://github.com/docker-library/openjdk/issues/212#issuecomment-420979840 +# http://openjdk.java.net/jeps/341 + java -Xshare:dump; \ + \ +# basic smoke test + java --version; \ + javac --version + +# https://docs.oracle.com/javase/10/tools/jshell.htm +# https://docs.oracle.com/javase/10/jshell/ +# https://en.wikipedia.org/wiki/JShell +CMD ["jshell"] diff --git a/12/jdk/windows/windowsservercore-1709/Dockerfile b/12/jdk/windows/windowsservercore-1709/Dockerfile index 93a65a05..d34d5084 100644 --- a/12/jdk/windows/windowsservercore-1709/Dockerfile +++ b/12/jdk/windows/windowsservercore-1709/Dockerfile @@ -3,7 +3,7 @@ FROM microsoft/windowsservercore:1709 # $ProgressPreference: https://github.com/PowerShell/PowerShell/issues/2138#issuecomment-251261324 SHELL ["powershell", "-Command", "$ErrorActionPreference = 'Stop'; $ProgressPreference = 'SilentlyContinue';"] -ENV JAVA_HOME C:\\jdk-12 +ENV JAVA_HOME C:\\openjdk-12 RUN $newPath = ('{0}\bin;{1}' -f $env:JAVA_HOME, $env:PATH); \ Write-Host ('Updating PATH: {0}' -f $newPath); \ # Nano Server does not have "[Environment]::SetEnvironmentVariable()" @@ -24,11 +24,14 @@ RUN Write-Host ('Downloading {0} ...' -f $env:JAVA_URL); \ }; \ \ Write-Host 'Expanding ...'; \ - Expand-Archive openjdk.zip -DestinationPath C:\; \ + New-Item -ItemType Directory -Path C:\temp | Out-Null; \ + Expand-Archive openjdk.zip -DestinationPath C:\temp; \ + Move-Item -Path C:\temp\* -Destination $env:JAVA_HOME; \ + Remove-Item C:\temp; \ \ Write-Host 'Verifying install ...'; \ - Write-Host ' java -version'; java -version; \ - Write-Host ' javac -version'; javac -version; \ + Write-Host ' java --version'; java --version; \ + Write-Host ' javac --version'; javac --version; \ \ Write-Host 'Removing ...'; \ Remove-Item openjdk.zip -Force; \ diff --git a/12/jdk/windows/windowsservercore-1803/Dockerfile b/12/jdk/windows/windowsservercore-1803/Dockerfile index 2e5f15bc..3b83fb48 100644 --- a/12/jdk/windows/windowsservercore-1803/Dockerfile +++ b/12/jdk/windows/windowsservercore-1803/Dockerfile @@ -3,7 +3,7 @@ FROM microsoft/windowsservercore:1803 # $ProgressPreference: https://github.com/PowerShell/PowerShell/issues/2138#issuecomment-251261324 SHELL ["powershell", "-Command", "$ErrorActionPreference = 'Stop'; $ProgressPreference = 'SilentlyContinue';"] -ENV JAVA_HOME C:\\jdk-12 +ENV JAVA_HOME C:\\openjdk-12 RUN $newPath = ('{0}\bin;{1}' -f $env:JAVA_HOME, $env:PATH); \ Write-Host ('Updating PATH: {0}' -f $newPath); \ # Nano Server does not have "[Environment]::SetEnvironmentVariable()" @@ -24,11 +24,14 @@ RUN Write-Host ('Downloading {0} ...' -f $env:JAVA_URL); \ }; \ \ Write-Host 'Expanding ...'; \ - Expand-Archive openjdk.zip -DestinationPath C:\; \ + New-Item -ItemType Directory -Path C:\temp | Out-Null; \ + Expand-Archive openjdk.zip -DestinationPath C:\temp; \ + Move-Item -Path C:\temp\* -Destination $env:JAVA_HOME; \ + Remove-Item C:\temp; \ \ Write-Host 'Verifying install ...'; \ - Write-Host ' java -version'; java -version; \ - Write-Host ' javac -version'; javac -version; \ + Write-Host ' java --version'; java --version; \ + Write-Host ' javac --version'; javac --version; \ \ Write-Host 'Removing ...'; \ Remove-Item openjdk.zip -Force; \ diff --git a/12/jdk/windows/windowsservercore-ltsc2016/Dockerfile b/12/jdk/windows/windowsservercore-ltsc2016/Dockerfile index 653650a6..4d829773 100644 --- a/12/jdk/windows/windowsservercore-ltsc2016/Dockerfile +++ b/12/jdk/windows/windowsservercore-ltsc2016/Dockerfile @@ -3,7 +3,7 @@ FROM microsoft/windowsservercore:ltsc2016 # $ProgressPreference: https://github.com/PowerShell/PowerShell/issues/2138#issuecomment-251261324 SHELL ["powershell", "-Command", "$ErrorActionPreference = 'Stop'; $ProgressPreference = 'SilentlyContinue';"] -ENV JAVA_HOME C:\\jdk-12 +ENV JAVA_HOME C:\\openjdk-12 RUN $newPath = ('{0}\bin;{1}' -f $env:JAVA_HOME, $env:PATH); \ Write-Host ('Updating PATH: {0}' -f $newPath); \ # Nano Server does not have "[Environment]::SetEnvironmentVariable()" @@ -24,11 +24,14 @@ RUN Write-Host ('Downloading {0} ...' -f $env:JAVA_URL); \ }; \ \ Write-Host 'Expanding ...'; \ - Expand-Archive openjdk.zip -DestinationPath C:\; \ + New-Item -ItemType Directory -Path C:\temp | Out-Null; \ + Expand-Archive openjdk.zip -DestinationPath C:\temp; \ + Move-Item -Path C:\temp\* -Destination $env:JAVA_HOME; \ + Remove-Item C:\temp; \ \ Write-Host 'Verifying install ...'; \ - Write-Host ' java -version'; java -version; \ - Write-Host ' javac -version'; javac -version; \ + Write-Host ' java --version'; java --version; \ + Write-Host ' javac --version'; javac --version; \ \ Write-Host 'Removing ...'; \ Remove-Item openjdk.zip -Force; \ diff --git a/8/jdk/windows/nanoserver-sac2016/Dockerfile b/8/jdk/windows/nanoserver-sac2016/Dockerfile index d04970dd..0e930581 100644 --- a/8/jdk/windows/nanoserver-sac2016/Dockerfile +++ b/8/jdk/windows/nanoserver-sac2016/Dockerfile @@ -47,8 +47,8 @@ RUN $url = ('https://github.com/ojdkbuild/ojdkbuild/releases/download/{0}/{1}' - ; \ \ Write-Host 'Verifying install ...'; \ - Write-Host ' java -version'; java -version; \ - Write-Host ' javac -version'; javac -version; \ + Write-Host ' java --version'; java --version; \ + Write-Host ' javac --version'; javac --version; \ \ Write-Host 'Removing ...'; \ Remove-Item ojdkbuild.zip -Force; \ diff --git a/8/jdk/windows/windowsservercore-1709/Dockerfile b/8/jdk/windows/windowsservercore-1709/Dockerfile index c0e2342e..ba4c6c92 100644 --- a/8/jdk/windows/windowsservercore-1709/Dockerfile +++ b/8/jdk/windows/windowsservercore-1709/Dockerfile @@ -35,8 +35,8 @@ RUN $url = ('https://github.com/ojdkbuild/ojdkbuild/releases/download/{0}/{1}' - ; \ \ Write-Host 'Verifying install ...'; \ - Write-Host ' java -version'; java -version; \ - Write-Host ' javac -version'; javac -version; \ + Write-Host ' java --version'; java --version; \ + Write-Host ' javac --version'; javac --version; \ \ Write-Host 'Removing ...'; \ Remove-Item ojdkbuild.zip -Force; \ diff --git a/8/jdk/windows/windowsservercore-ltsc2016/Dockerfile b/8/jdk/windows/windowsservercore-ltsc2016/Dockerfile index 55f536fe..565b18f6 100644 --- a/8/jdk/windows/windowsservercore-ltsc2016/Dockerfile +++ b/8/jdk/windows/windowsservercore-ltsc2016/Dockerfile @@ -35,8 +35,8 @@ RUN $url = ('https://github.com/ojdkbuild/ojdkbuild/releases/download/{0}/{1}' - ; \ \ Write-Host 'Verifying install ...'; \ - Write-Host ' java -version'; java -version; \ - Write-Host ' javac -version'; javac -version; \ + Write-Host ' java --version'; java --version; \ + Write-Host ' javac --version'; javac --version; \ \ Write-Host 'Removing ...'; \ Remove-Item ojdkbuild.zip -Force; \ diff --git a/Dockerfile-alpine.template b/Dockerfile-alpine.template new file mode 100644 index 00000000..7387044a --- /dev/null +++ b/Dockerfile-alpine.template @@ -0,0 +1,31 @@ +FROM alpine:3.8 + +ENV JAVA_HOME placeholder +ENV PATH $JAVA_HOME/bin:$PATH + +# http://jdk.java.net/ +ENV JAVA_VERSION placeholder +ENV JAVA_URL placeholder +ENV JAVA_SHA256 placeholder +# "For Alpine Linux, builds are produced on a reduced schedule and may not be in sync with the other platforms." + +RUN set -eux; \ + \ + wget -O /openjdk.tgz "$JAVA_URL"; \ + echo "$JAVA_SHA256 */openjdk.tgz" | sha256sum -c -; \ + mkdir -p "$JAVA_HOME"; \ + tar --extract --file /openjdk.tgz --directory "$JAVA_HOME" --strip-components 1; \ + rm /openjdk.tgz; \ + \ +# https://github.com/docker-library/openjdk/issues/212#issuecomment-420979840 +# http://openjdk.java.net/jeps/341 + java -Xshare:dump; \ + \ +# basic smoke test + java --version; \ + javac --version + +# https://docs.oracle.com/javase/10/tools/jshell.htm +# https://docs.oracle.com/javase/10/jshell/ +# https://en.wikipedia.org/wiki/JShell +CMD ["jshell"] diff --git a/Dockerfile-oracle.template b/Dockerfile-oracle.template new file mode 100644 index 00000000..071db96c --- /dev/null +++ b/Dockerfile-oracle.template @@ -0,0 +1,54 @@ +FROM oraclelinux:7-slim + +RUN set -eux; \ + yum install -y \ + gzip \ + tar \ + \ +# java.lang.UnsatisfiedLinkError: /usr/java/openjdk-12/lib/libfontmanager.so: libfreetype.so.6: cannot open shared object file: No such file or directory +# https://github.com/docker-library/openjdk/pull/235#issuecomment-424466077 + freetype fontconfig \ + ; \ + rm -rf /var/cache/yum + +# Default to UTF-8 file.encoding +#ENV LANG C.UTF-8 +# TODO oraclelinux doesn't have C.UTF-8 by default?? + +ENV JAVA_HOME placeholder +ENV PATH $JAVA_HOME/bin:$PATH + +# http://jdk.java.net/ +ENV JAVA_VERSION placeholder +ENV JAVA_URL placeholder +ENV JAVA_SHA256 placeholder + +RUN set -eux; \ + \ + curl -fL -o /openjdk.tgz "$JAVA_URL"; \ + echo "$JAVA_SHA256 */openjdk.tgz" | sha256sum -c -; \ + mkdir -p "$JAVA_HOME"; \ + tar --extract --file /openjdk.tgz --directory "$JAVA_HOME" --strip-components 1; \ + rm /openjdk.tgz; \ + \ +# https://github.com/oracle/docker-images/blob/a56e0d1ed968ff669d2e2ba8a1483d0f3acc80c0/OracleJava/java-8/Dockerfile#L17-L19 + ln -sfT "$JAVA_HOME" /usr/java/default; \ + ln -sfT "$JAVA_HOME" /usr/java/latest; \ + for bin in "$JAVA_HOME/bin/"*; do \ + base="$(basename "$bin")"; \ + [ ! -e "/usr/bin/$base" ]; \ + alternatives --install "/usr/bin/$base" "$base" "$bin" 20000; \ + done; \ + \ +# https://github.com/docker-library/openjdk/issues/212#issuecomment-420979840 +# http://openjdk.java.net/jeps/341 + java -Xshare:dump; \ + \ +# basic smoke test + java --version; \ + javac --version + +# https://docs.oracle.com/javase/10/tools/jshell.htm +# https://docs.oracle.com/javase/10/jshell/ +# https://en.wikipedia.org/wiki/JShell +CMD ["jshell"] diff --git a/Dockerfile-windows.template b/Dockerfile-windows.template new file mode 100644 index 00000000..ce2c01c2 --- /dev/null +++ b/Dockerfile-windows.template @@ -0,0 +1,43 @@ +FROM microsoft/windowsservercore:placeholder + +# $ProgressPreference: https://github.com/PowerShell/PowerShell/issues/2138#issuecomment-251261324 +SHELL ["powershell", "-Command", "$ErrorActionPreference = 'Stop'; $ProgressPreference = 'SilentlyContinue';"] + +ENV JAVA_HOME placeholder +RUN $newPath = ('{0}\bin;{1}' -f $env:JAVA_HOME, $env:PATH); \ + Write-Host ('Updating PATH: {0}' -f $newPath); \ +# Nano Server does not have "[Environment]::SetEnvironmentVariable()" + setx /M PATH $newPath + +# http://jdk.java.net/ +ENV JAVA_VERSION placeholder +ENV JAVA_URL placeholder +ENV JAVA_SHA256 placeholder + +RUN Write-Host ('Downloading {0} ...' -f $env:JAVA_URL); \ + [Net.ServicePointManager]::SecurityProtocol = [Net.SecurityProtocolType]::Tls12; \ + Invoke-WebRequest -Uri $env:JAVA_URL -OutFile 'openjdk.zip'; \ + Write-Host ('Verifying sha256 ({0}) ...' -f $env:JAVA_SHA256); \ + if ((Get-FileHash openjdk.zip -Algorithm sha256).Hash -ne $env:JAVA_SHA256) { \ + Write-Host 'FAILED!'; \ + exit 1; \ + }; \ + \ + Write-Host 'Expanding ...'; \ + New-Item -ItemType Directory -Path C:\temp | Out-Null; \ + Expand-Archive openjdk.zip -DestinationPath C:\temp; \ + Move-Item -Path C:\temp\* -Destination $env:JAVA_HOME; \ + Remove-Item C:\temp; \ + \ + Write-Host 'Verifying install ...'; \ + Write-Host ' java --version'; java --version; \ + Write-Host ' javac --version'; javac --version; \ + \ + Write-Host 'Removing ...'; \ + Remove-Item openjdk.zip -Force; \ + \ + Write-Host 'Complete.' + +# https://docs.oracle.com/javase/10/tools/jshell.htm +# https://en.wikipedia.org/wiki/JShell +CMD ["jshell"] diff --git a/generate-stackbrew-library.sh b/generate-stackbrew-library.sh index 532b4811..1bb8f4c4 100755 --- a/generate-stackbrew-library.sh +++ b/generate-stackbrew-library.sh @@ -124,7 +124,7 @@ aliases() { for javaVersion in "${versions[@]}"; do for javaType in jdk jre; do for v in \ - '' slim alpine \ + oracle '' slim alpine \ windows/windowsservercore-{ltsc2016,1709,1803} \ windows/nanoserver-{sac2016,1709,1803} \ ; do @@ -137,13 +137,23 @@ for javaVersion in "${versions[@]}"; do fullVersion="$(git show "$commit":"$dir/Dockerfile" | awk '$1 == "ENV" && $2 == "JAVA_VERSION" { gsub(/[~+]/, "-", $3); print $3; exit }')" - case "$v" in - windows/*) variantArches='windows-amd64' ;; - *) - variantParent="$(awk 'toupper($1) == "FROM" { print $2 }' "$dir/Dockerfile")" - variantArches="${parentRepoToArches[$variantParent]}" - ;; - esac + variantArches= + if [ "$javaVersion" -ge 10 ]; then + # http://jdk.java.net/10/, http://jdk.java.net/11/, http://jdk.java.net/12/, ... + # (no arches except amd64 supported) + case "$v" in + oracle|alpine) variantArches='amd64' ;; + esac + fi + if [ -z "$variantArches" ]; then + case "$v" in + windows/*) variantArches='windows-amd64' ;; + *) + variantParent="$(awk 'toupper($1) == "FROM" { print $2 }' "$dir/Dockerfile")" + variantArches="${parentRepoToArches[$variantParent]}" + ;; + esac + fi sharedTags=() for windowsShared in windowsservercore nanoserver; do @@ -160,8 +170,9 @@ for javaVersion in "${versions[@]}"; do case /^microsoft\//: $2 = "" break - case /^alpine:/: + case /^(alpine|oraclelinux):/: gsub(/:/, "", $2) # "alpine3.7", "alpine3.6", etc + gsub(/-slim$/, "", $2) # "oraclelinux:7-slim" break default: gsub(/^[^:]+:/, "", $2) # peel off "debian:", "buildpack-deps:", etc @@ -175,7 +186,7 @@ for javaVersion in "${versions[@]}"; do } END { if (fromTag) { - if (variant && fromTag !~ /^alpine/) { + if (variant && fromTag !~ /^(alpine|oraclelinux)/) { # "slim-stretch", "slim-jessie", etc printf "%s-", variant } diff --git a/update.sh b/update.sh index a08ae80e..b90b88af 100755 --- a/update.sh +++ b/update.sh @@ -10,7 +10,7 @@ fi versions=( "${versions[@]%/}" ) # sort version numbers with lowest first -IFS=$'\n'; versions=( $(echo "${versions[*]}" | sort -V) ); unset IFS +IFS=$'\n'; versions=( $(sort -V <<<"${versions[*]}") ); unset IFS declare -A suites=( # FROM buildpack-deps:SUITE-xxx @@ -94,11 +94,10 @@ debian-latest-version() { fi IFS=$'\n' local versions=( $( - echo "${debCache[$remote]}" \ - | awk -F ': ' ' - $1 == "Package" { pkg = $2 } - pkg == "'"$package"'" && $1 == "Version" { print $2 } - ' + awk -F ': ' ' + $1 == "Package" { pkg = $2 } + pkg == "'"$package"'" && $1 == "Version" { print $2 } + ' <<<"${debCache[$remote]}" ) ) unset IFS local version= @@ -163,6 +162,30 @@ template-contribute-footer() { EOD } +jdk-java-net-download-url() { + local javaVersion="$1"; shift + local fileSuffix="$1"; shift + curl -fsSL "http://jdk.java.net/$javaVersion/" \ + | tac|tac \ + | grep -Eom1 "https://download.java.net/[^\"]+$fileSuffix" +} + +jdk-java-net-download-version() { + local javaVersion="$1"; shift + local downloadUrl="$1"; shift + + downloadVersion="$(grep -Eom1 "openjdk-$javaVersion[^_]*_" <<<"$downloadUrl")" + downloadVersion="${downloadVersion%_}" + downloadVersion="${downloadVersion#openjdk-}" + if [ "$javaVersion" = '11' ]; then + # 11 is now GA, so drop any +NN (https://github.com/docker-library/openjdk/pull/235#issuecomment-425378941) + # future releases will be 11.0.1, for example + downloadVersion="${downloadVersion%%+*}" + fi + + echo "$downloadVersion" +} + travisEnv= appveyorEnv= for javaVersion in "${versions[@]}"; do @@ -311,7 +334,7 @@ EOD template-contribute-footer >> "$dir/Dockerfile" fi - if [ -d "$dir/alpine" ]; then + if [ -d "$dir/alpine" ] && [ "$javaVersion" -lt 10 ]; then alpineVersion="${alpineVersions[$javaVersion]:-$defaultAlpineVersion}" alpinePackage="openjdk$javaVersion" alpineJavaHome="/usr/lib/jvm/java-1.${javaVersion}-openjdk" @@ -365,6 +388,34 @@ RUN set -x \\ EOD template-contribute-footer >> "$dir/alpine/Dockerfile" + elif [ -d "$dir/alpine" ]; then + downloadUrl="$(jdk-java-net-download-url "$javaVersion" '_linux-x64-musl_bin.tar.gz')" + downloadSha256="$(curl -fsSL "$downloadUrl.sha256")" + downloadVersion="$(jdk-java-net-download-version "$javaVersion" "$downloadUrl")" + + echo "$javaVersion-$javaType: $downloadVersion (alpine)" + + sed -r \ + -e 's!^(ENV JAVA_HOME) .*!\1 /opt/openjdk-'"$javaVersion"'!' \ + -e 's!^(ENV JAVA_VERSION) .*!\1 '"$downloadVersion"'!' \ + -e 's!^(ENV JAVA_URL) .*!\1 '"$downloadUrl"'!' \ + -e 's!^(ENV JAVA_SHA256) .*!\1 '"$downloadSha256"'!' \ + Dockerfile-alpine.template > "$dir/alpine/Dockerfile" + fi + + if [ -d "$dir/oracle" ]; then + downloadUrl="$(jdk-java-net-download-url "$javaVersion" '_linux-x64_bin.tar.gz')" + downloadSha256="$(curl -fsSL "$downloadUrl.sha256")" + downloadVersion="$(jdk-java-net-download-version "$javaVersion" "$downloadUrl")" + + echo "$javaVersion-$javaType: $downloadVersion (oracle)" + + sed -r \ + -e 's!^(ENV JAVA_HOME) .*!\1 /usr/java/openjdk-'"$javaVersion"'!' \ + -e 's!^(ENV JAVA_VERSION) .*!\1 '"$downloadVersion"'!' \ + -e 's!^(ENV JAVA_URL) .*!\1 '"$downloadUrl"'!' \ + -e 's!^(ENV JAVA_SHA256) .*!\1 '"$downloadSha256"'!' \ + Dockerfile-oracle.template > "$dir/oracle/Dockerfile" fi if [ -d "$dir/slim" ]; then @@ -409,12 +460,12 @@ EOD case "$ojdkbuildVersion" in *-ea-* ) # convert "9-ea-b154-1" into "9-b154" - ojdkJavaVersion="$(echo "$ojdkbuildVersion" | sed -r 's/-ea-/-/' | cut -d- -f1,2)" + ojdkJavaVersion="$(sed -r 's/-ea-/-/' <<<"$ojdkbuildVersion" | cut -d- -f1,2)" ;; 1.* ) # convert "1.8.0.111-3" into "8u111" - ojdkJavaVersion="$(echo "$ojdkbuildVersion" | cut -d. -f2,4 | cut -d- -f1 | tr . u)" + ojdkJavaVersion="$(cut -d. -f2,4 <<<"$ojdkbuildVersion" | cut -d- -f1 | tr . u)" ;; 10.* ) @@ -439,29 +490,24 @@ EOD ;; *) - downloadUrl="$( - curl -fsSL "http://jdk.java.net/$javaVersion/" \ - | tac|tac \ - | grep -Eom1 'https://download.java.net/[^"]+_windows-x64_bin.zip' - )" + downloadUrl="$(jdk-java-net-download-url "$javaVersion" '_windows-x64_bin.zip')" downloadSha256="$(curl -fsSL "$downloadUrl.sha256")" - downloadVersion="$(grep -Eom1 "openjdk-$javaVersion[^_]+" <<<"$downloadUrl")" - downloadVersion="${downloadVersion#openjdk-}" - - if [ "$javaVersion" = '11' ]; then - # 11 is now GA, so drop any +NN (https://github.com/docker-library/openjdk/pull/235#issuecomment-425378941) - # future releases will be 11.0.1, for example - downloadVersion="${downloadVersion%%+*}" - fi + downloadVersion="$(jdk-java-net-download-version "$javaVersion" "$downloadUrl")" echo "$javaVersion-$javaType: $downloadVersion (windows)" - sed -ri \ - -e 's!^(ENV JAVA_VERSION) .*!\1 '"$downloadVersion"'!' \ - -e 's!^(ENV JAVA_URL) .*!\1 '"$downloadUrl"'!' \ - -e 's!^(ENV JAVA_SHA256) .*!\1 '"$downloadSha256"'!' \ - -e 's!^(ENV JAVA_HOME) .*!\1 C:\\\\jdk-'"$javaVersion"'!' \ - "$dir"/windows/*/Dockerfile + for winD in "$dir"/windows/*/; do + winD="${winD%/}" + windowsVersion="$(basename "$winD")" + windowsVersion="${windowsVersion#windowsservercore-}" + sed -r \ + -e 's!^(FROM microsoft/windowsservercore):.*$!\1:'"$windowsVersion"'!' \ + -e 's!^(ENV JAVA_HOME) .*!\1 C:\\\\openjdk-'"$javaVersion"'!' \ + -e 's!^(ENV JAVA_VERSION) .*!\1 '"$downloadVersion"'!' \ + -e 's!^(ENV JAVA_URL) .*!\1 '"$downloadUrl"'!' \ + -e 's!^(ENV JAVA_SHA256) .*!\1 '"$downloadSha256"'!' \ + Dockerfile-windows.template > "$winD/Dockerfile" + done ;; esac @@ -492,6 +538,9 @@ EOD if [ -e "$javaVersion/jdk/Dockerfile" ]; then travisEnv='\n - VERSION='"$javaVersion$travisEnv" fi + if [ -d "$javaVersion/jdk/oracle" ]; then + travisEnv='\n - VERSION='"$javaVersion"' VARIANT=oracle'"$travisEnv" + fi done travis="$(awk -v 'RS=\n\n' '$1 == "env:" { $0 = "env:'"$travisEnv"'" } { printf "%s%s", $0, RS }' .travis.yml)"