Skip to content

Commit

Permalink
Issue #110 - add jre variants for eclipse-temurin images
Browse files Browse the repository at this point in the history
Signed-off-by: Lachlan Roberts <lachlan@webtide.com>
  • Loading branch information
lachlan-roberts committed Sep 12, 2022
1 parent 3d9aa0d commit db017bd
Show file tree
Hide file tree
Showing 21 changed files with 1,533 additions and 0 deletions.
97 changes: 97 additions & 0 deletions eclipse-temurin/10.0/jre11/Dockerfile
Original file line number Diff line number Diff line change
@@ -0,0 +1,97 @@
# DO NOT EDIT. Edit baseDockerfile-slim and use update.sh
FROM eclipse-temurin:jre11

ENV JETTY_VERSION 10.0.11
ENV JETTY_HOME /usr/local/jetty
ENV JETTY_BASE /var/lib/jetty
ENV TMPDIR /tmp/jetty
ENV PATH $JETTY_HOME/bin:$PATH
ENV JETTY_TGZ_URL https://repo1.maven.org/maven2/org/eclipse/jetty/jetty-home/$JETTY_VERSION/jetty-home-$JETTY_VERSION.tar.gz

# GPG Keys are personal keys of Jetty committers (see https://github.com/eclipse/jetty.project/blob/0607c0e66e44b9c12a62b85551da3a0edce0281e/KEYS.txt)
ENV JETTY_GPG_KEYS \
# Jan Bartel <janb@mortbay.com>
AED5EE6C45D0FE8D5D1B164F27DED4BF6216DB8F \
# Jesse McConnell <jesse.mcconnell@gmail.com>
2A684B57436A81FA8706B53C61C3351A438A3B7D \
# Joakim Erdfelt <joakim.erdfelt@gmail.com>
5989BAF76217B843D66BE55B2D0E1FB8FE4B68B4 \
# Joakim Erdfelt <joakim@apache.org>
B59B67FD7904984367F931800818D9D68FB67BAC \
# Joakim Erdfelt <joakim@erdfelt.com>
BFBB21C246D7776836287A48A04E0C74ABB35FEA \
# Simone Bordet <simone.bordet@gmail.com>
8B096546B1A8F02656B15D3B1677D141BCF3584D \
# Greg Wilkins <gregw@webtide.com>
FBA2B18D238AB852DF95745C76157BDF03D0DCD6 \
# Greg Wilkins <gregw@webtide.com>
5C9579B3DB2E506429319AAEF33B071B29559E1E \
# Olivier Lamy <olamy@apache.org>
F254B35617DC255D9344BCFA873A8E86B4372146

RUN set -xe ; \
# Save initial installation state
export savedAptMark="$(apt-mark showmanual)" ; \
#
mkdir -p $TMPDIR ; \
#
# Install utils needed to verify keys
apt-get update ; \
apt-get install -y --no-install-recommends \
ca-certificates \
p11-kit \
gnupg \
curl \
; \
#
# fetch GPG keys
export GNUPGHOME=/jetty-keys ; \
mkdir -p "$GNUPGHOME" ; \
for key in $JETTY_GPG_KEYS; do \
gpg --batch --keyserver "hkps://keyserver.ubuntu.com" --recv-keys "$key"; \
done ; \
#
# Fetch jetty release into JETTY_HOME
mkdir -p "$JETTY_HOME" ; \
cd $JETTY_HOME ; \
curl -SL "$JETTY_TGZ_URL" -o jetty.tar.gz ; \
curl -SL "$JETTY_TGZ_URL.asc" -o jetty.tar.gz.asc ; \
#
# Verify GPG signatures
gpg --batch --verify jetty.tar.gz.asc jetty.tar.gz ; \
#
# Unpack jetty
tar -xvf jetty.tar.gz --strip-components=1 ; \
sed -i '/jetty-logging/d' etc/jetty.conf ; \
#
# Create and configure the JETTY_HOME directory
mkdir -p "$JETTY_BASE" ; \
cd $JETTY_BASE ; \
java -jar "$JETTY_HOME/start.jar" --create-startd \
--add-to-start="server,http,deploy,jsp,jstl,ext,resources,websocket" ; \
groupadd -r jetty && useradd -r -g jetty jetty ; \
chown -R jetty:jetty "$JETTY_HOME" "$JETTY_BASE" "$TMPDIR" ; \
usermod -d $JETTY_BASE jetty ; \
#
# Cleanup any apt
apt-mark auto '.*' > /dev/null ; \
[ -z "$savedAptMark" ] || apt-mark manual $savedAptMark > /dev/null ; \
apt-get purge -y --auto-remove -o APT::AutoRemove::RecommendsImportant=false ; \
rm -rf /var/lib/apt/lists/* ; \
#
# Cleanup
rm -rf /tmp/hsperfdata_root ; \
rm -fr $JETTY_HOME/jetty.tar.gz* ; \
rm -fr /jetty-keys $GNUPGHOME ; \
rm -rf /tmp/hsperfdata_root ; \
#
# Basic smoke test
java -jar "$JETTY_HOME/start.jar" --list-config ;

WORKDIR $JETTY_BASE
COPY docker-entrypoint.sh generate-jetty-start.sh /

USER jetty
EXPOSE 8080
ENTRYPOINT ["/docker-entrypoint.sh"]
CMD ["java","-jar","/usr/local/jetty/start.jar"]
104 changes: 104 additions & 0 deletions eclipse-temurin/10.0/jre11/docker-entrypoint.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,104 @@
#!/bin/sh

set -e

if [ "$1" = jetty.sh ]; then
if ! command -v bash >/dev/null 2>&1 ; then
cat >&2 <<- 'EOWARN'
********************************************************************
ERROR: bash not found. Use of jetty.sh requires bash.
********************************************************************
EOWARN
exit 1
fi
cat >&2 <<- 'EOWARN'
********************************************************************
WARNING: Use of jetty.sh from this image is deprecated and may
be removed at some point in the future.
See the documentation for guidance on extending this image:
https://github.com/docker-library/docs/tree/master/jetty
********************************************************************
EOWARN
fi

if ! command -v -- "$1" >/dev/null 2>&1 ; then
set -- java -jar "$JETTY_HOME/start.jar" "$@"
fi

: ${TMPDIR:=/tmp/jetty}
[ -d "$TMPDIR" ] || mkdir -p $TMPDIR 2>/dev/null

: ${JETTY_START:=$JETTY_BASE/jetty.start}

case "$JAVA_OPTIONS" in
*-Djava.io.tmpdir=*) ;;
*) JAVA_OPTIONS="-Djava.io.tmpdir=$TMPDIR $JAVA_OPTIONS" ;;
esac

if expr "$*" : 'java .*/start\.jar.*$' >/dev/null ; then
# this is a command to run jetty

# check if it is a terminating command
for A in "$@" ; do
case $A in
--add-to-start* |\
--create-files |\
--create-startd |\
--download |\
--dry-run |\
--exec-print |\
--help |\
--info |\
--list-all-modules |\
--list-classpath |\
--list-config |\
--list-modules* |\
--stop |\
--update-ini |\
--version |\
-v )\
# It is a terminating command, so exec directly
JAVA="$1"
shift
exec $JAVA $JAVA_OPTIONS "$@"
esac
done

if [ $(whoami) != "jetty" ]; then
cat >&2 <<- EOWARN
********************************************************************
WARNING: User is $(whoami)
The user should be (re)set to 'jetty' in the Dockerfile
********************************************************************
EOWARN
fi

if [ -f $JETTY_START ] ; then
if [ $JETTY_BASE/start.d -nt $JETTY_START ] ; then
cat >&2 <<- EOWARN
********************************************************************
WARNING: The $JETTY_BASE/start.d directory has been modified since
the $JETTY_START files was generated.
To avoid regeneration delays at start, either delete
the $JETTY_START file or re-run /generate-jetty-start.sh
from a Dockerfile.
********************************************************************
EOWARN
/generate-jetty-start.sh "$@"
fi
echo $(date +'%Y-%m-%d %H:%M:%S.000'):INFO:docker-entrypoint:jetty start from $JETTY_START
set -- $(cat $JETTY_START)
else
/generate-jetty-start.sh "$@"
set -- $(cat $JETTY_START)
fi
fi

if [ "${1##*/}" = java -a -n "$JAVA_OPTIONS" ] ; then
JAVA="$1"
shift
set -- "$JAVA" $JAVA_OPTIONS "$@"
fi

exec "$@"
18 changes: 18 additions & 0 deletions eclipse-temurin/10.0/jre11/generate-jetty-start.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,18 @@
#!/bin/sh

if [ -z "$JETTY_START" ] ; then
JETTY_START=$JETTY_BASE/jetty.start
fi
rm -f $JETTY_START
DRY_RUN=$(/docker-entrypoint.sh "$@" --dry-run)
echo "$DRY_RUN" \
| egrep '[^ ]*java .* org\.eclipse\.jetty\.xml\.XmlConfiguration ' \
| sed -e 's/ -Djava.io.tmpdir=[^ ]*//g' -e 's/\\$//' \
> $JETTY_START

# If jetty.start doesn't have content then the dry-run failed.
if ! [ -s $JETTY_START ]; then
echo "jetty dry run failed:"
echo "$DRY_RUN" | awk '/\\$/ { printf "%s", substr($0, 1, length($0)-1); next } 1'
exit 1
fi
97 changes: 97 additions & 0 deletions eclipse-temurin/10.0/jre17/Dockerfile
Original file line number Diff line number Diff line change
@@ -0,0 +1,97 @@
# DO NOT EDIT. Edit baseDockerfile-slim and use update.sh
FROM eclipse-temurin:jre17

ENV JETTY_VERSION 10.0.11
ENV JETTY_HOME /usr/local/jetty
ENV JETTY_BASE /var/lib/jetty
ENV TMPDIR /tmp/jetty
ENV PATH $JETTY_HOME/bin:$PATH
ENV JETTY_TGZ_URL https://repo1.maven.org/maven2/org/eclipse/jetty/jetty-home/$JETTY_VERSION/jetty-home-$JETTY_VERSION.tar.gz

# GPG Keys are personal keys of Jetty committers (see https://github.com/eclipse/jetty.project/blob/0607c0e66e44b9c12a62b85551da3a0edce0281e/KEYS.txt)
ENV JETTY_GPG_KEYS \
# Jan Bartel <janb@mortbay.com>
AED5EE6C45D0FE8D5D1B164F27DED4BF6216DB8F \
# Jesse McConnell <jesse.mcconnell@gmail.com>
2A684B57436A81FA8706B53C61C3351A438A3B7D \
# Joakim Erdfelt <joakim.erdfelt@gmail.com>
5989BAF76217B843D66BE55B2D0E1FB8FE4B68B4 \
# Joakim Erdfelt <joakim@apache.org>
B59B67FD7904984367F931800818D9D68FB67BAC \
# Joakim Erdfelt <joakim@erdfelt.com>
BFBB21C246D7776836287A48A04E0C74ABB35FEA \
# Simone Bordet <simone.bordet@gmail.com>
8B096546B1A8F02656B15D3B1677D141BCF3584D \
# Greg Wilkins <gregw@webtide.com>
FBA2B18D238AB852DF95745C76157BDF03D0DCD6 \
# Greg Wilkins <gregw@webtide.com>
5C9579B3DB2E506429319AAEF33B071B29559E1E \
# Olivier Lamy <olamy@apache.org>
F254B35617DC255D9344BCFA873A8E86B4372146

RUN set -xe ; \
# Save initial installation state
export savedAptMark="$(apt-mark showmanual)" ; \
#
mkdir -p $TMPDIR ; \
#
# Install utils needed to verify keys
apt-get update ; \
apt-get install -y --no-install-recommends \
ca-certificates \
p11-kit \
gnupg \
curl \
; \
#
# fetch GPG keys
export GNUPGHOME=/jetty-keys ; \
mkdir -p "$GNUPGHOME" ; \
for key in $JETTY_GPG_KEYS; do \
gpg --batch --keyserver "hkps://keyserver.ubuntu.com" --recv-keys "$key"; \
done ; \
#
# Fetch jetty release into JETTY_HOME
mkdir -p "$JETTY_HOME" ; \
cd $JETTY_HOME ; \
curl -SL "$JETTY_TGZ_URL" -o jetty.tar.gz ; \
curl -SL "$JETTY_TGZ_URL.asc" -o jetty.tar.gz.asc ; \
#
# Verify GPG signatures
gpg --batch --verify jetty.tar.gz.asc jetty.tar.gz ; \
#
# Unpack jetty
tar -xvf jetty.tar.gz --strip-components=1 ; \
sed -i '/jetty-logging/d' etc/jetty.conf ; \
#
# Create and configure the JETTY_HOME directory
mkdir -p "$JETTY_BASE" ; \
cd $JETTY_BASE ; \
java -jar "$JETTY_HOME/start.jar" --create-startd \
--add-to-start="server,http,deploy,jsp,jstl,ext,resources,websocket" ; \
groupadd -r jetty && useradd -r -g jetty jetty ; \
chown -R jetty:jetty "$JETTY_HOME" "$JETTY_BASE" "$TMPDIR" ; \
usermod -d $JETTY_BASE jetty ; \
#
# Cleanup any apt
apt-mark auto '.*' > /dev/null ; \
[ -z "$savedAptMark" ] || apt-mark manual $savedAptMark > /dev/null ; \
apt-get purge -y --auto-remove -o APT::AutoRemove::RecommendsImportant=false ; \
rm -rf /var/lib/apt/lists/* ; \
#
# Cleanup
rm -rf /tmp/hsperfdata_root ; \
rm -fr $JETTY_HOME/jetty.tar.gz* ; \
rm -fr /jetty-keys $GNUPGHOME ; \
rm -rf /tmp/hsperfdata_root ; \
#
# Basic smoke test
java -jar "$JETTY_HOME/start.jar" --list-config ;

WORKDIR $JETTY_BASE
COPY docker-entrypoint.sh generate-jetty-start.sh /

USER jetty
EXPOSE 8080
ENTRYPOINT ["/docker-entrypoint.sh"]
CMD ["java","-jar","/usr/local/jetty/start.jar"]

0 comments on commit db017bd

Please sign in to comment.