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