|
| 1 | +FROM eclipse-temurin:25-jdk-noble |
| 2 | + |
| 3 | +CMD ["groovysh"] |
| 4 | + |
| 5 | +ENV GROOVY_HOME=/opt/groovy |
| 6 | + |
| 7 | +RUN set -o errexit -o nounset \ |
| 8 | + && echo "Renaming ubuntu user and group to groovy" \ |
| 9 | + && groupmod --new-name groovy ubuntu \ |
| 10 | + && mkdir /home/groovy \ |
| 11 | + && usermod --login groovy --home /home/groovy --groups groovy ubuntu \ |
| 12 | + && chown groovy /home/groovy \ |
| 13 | + && mkdir --parents /home/groovy/.groovy/grapes \ |
| 14 | + && chown --recursive groovy:groovy /home/groovy \ |
| 15 | + && chmod --recursive 1777 /home/groovy \ |
| 16 | + \ |
| 17 | + && echo "Symlinking root .groovy to groovy .groovy" \ |
| 18 | + && ln --symbolic /home/groovy/.groovy /root/.groovy |
| 19 | + |
| 20 | +VOLUME /home/groovy/.groovy/grapes |
| 21 | + |
| 22 | +WORKDIR /home/groovy |
| 23 | + |
| 24 | +RUN set -o errexit -o nounset \ |
| 25 | + && apt-get update \ |
| 26 | + && echo "Installing build dependencies" \ |
| 27 | + && apt-get install --yes --no-install-recommends \ |
| 28 | + dirmngr \ |
| 29 | + gnupg \ |
| 30 | + unzip \ |
| 31 | + wget \ |
| 32 | + && rm --recursive --force /var/lib/apt/lists/* |
| 33 | + |
| 34 | +ENV GROOVY_VERSION=5.0.3 |
| 35 | +RUN set -o errexit -o nounset \ |
| 36 | + && echo "Downloading Groovy" \ |
| 37 | + && wget --no-verbose --output-document=groovy.zip "https://archive.apache.org/dist/groovy/${GROOVY_VERSION}/distribution/apache-groovy-binary-${GROOVY_VERSION}.zip" \ |
| 38 | + \ |
| 39 | + && echo "Importing keys listed in http://www.apache.org/dist/groovy/KEYS from key server" \ |
| 40 | + && export GNUPGHOME="$(mktemp -d)" \ |
| 41 | + && gpg --batch --no-tty --keyserver keyserver.ubuntu.com --recv-keys \ |
| 42 | + 7FAA0F2206DE228F0DB01AD741321490758AAD6F \ |
| 43 | + 331224E1D7BE883D16E8A685825C06C827AF6B66 \ |
| 44 | + 34441E504A937F43EB0DAEF96A65176A0FB1CD0B \ |
| 45 | + 9A810E3B766E089FFB27C70F11B595CEDC4AEBB5 \ |
| 46 | + 81CABC23EECA0790E8989B361FF96E10F0E13706 \ |
| 47 | + \ |
| 48 | + && echo "Checking download signature" \ |
| 49 | + && wget --no-verbose --output-document=groovy.zip.asc "https://archive.apache.org/dist/groovy/${GROOVY_VERSION}/distribution/apache-groovy-binary-${GROOVY_VERSION}.zip.asc" \ |
| 50 | + && gpg --batch --no-tty --verify groovy.zip.asc groovy.zip \ |
| 51 | + && rm --recursive --force "${GNUPGHOME}" \ |
| 52 | + && rm groovy.zip.asc \ |
| 53 | + \ |
| 54 | + && echo "Installing Groovy" \ |
| 55 | + && unzip groovy.zip \ |
| 56 | + && rm groovy.zip \ |
| 57 | + && mv "groovy-${GROOVY_VERSION}" "${GROOVY_HOME}/" \ |
| 58 | + && rm --force "${GROOVY_HOME}/lib/groovy-raw-${GROOVY_VERSION}-raw.jar" \ |
| 59 | + && ln --symbolic "${GROOVY_HOME}/bin/grape" /usr/bin/grape \ |
| 60 | + && ln --symbolic "${GROOVY_HOME}/bin/groovy" /usr/bin/groovy \ |
| 61 | + && ln --symbolic "${GROOVY_HOME}/bin/groovyc" /usr/bin/groovyc \ |
| 62 | + && ln --symbolic "${GROOVY_HOME}/bin/groovyConsole" /usr/bin/groovyConsole \ |
| 63 | + && ln --symbolic "${GROOVY_HOME}/bin/groovydoc" /usr/bin/groovydoc \ |
| 64 | + && ln --symbolic "${GROOVY_HOME}/bin/groovysh" /usr/bin/groovysh \ |
| 65 | + && ln --symbolic "${GROOVY_HOME}/bin/java2groovy" /usr/bin/java2groovy \ |
| 66 | + \ |
| 67 | + && echo "Editing startGroovy to include java.xml.bind module" \ |
| 68 | + && sed --in-place 's|startGroovy ( ) {|startGroovy ( ) {\n JAVA_OPTS="$JAVA_OPTS --add-modules=ALL-SYSTEM"|' "${GROOVY_HOME}/bin/startGroovy" |
| 69 | + |
| 70 | +USER 1000:1000 |
| 71 | + |
| 72 | +RUN set -o errexit -o nounset \ |
| 73 | + && echo "Testing Groovy installation" \ |
| 74 | + && groovy --version |
0 commit comments