Skip to content

Commit

Permalink
Initial commit of project files from appropriate/docker-jetty
Browse files Browse the repository at this point in the history
  • Loading branch information
Chris Walker committed May 21, 2020
1 parent 13e3f2b commit f4b8a22
Show file tree
Hide file tree
Showing 38 changed files with 1,959 additions and 0 deletions.
23 changes: 23 additions & 0 deletions .travis.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,23 @@
---
language: bash

dist: trusty

env:
- VERSION=9.2-jre8
- VERSION=9.3-jre8
- VERSION=9.4-jre8
- VERSION=9.4-jre11

install:
- git clone https://github.com/docker-library/official-images.git ~/official-images

before_script:
- env | sort
- wget -qO- 'https://github.com/tianon/pgp-happy-eyeballs/raw/master/hack-my-builds.sh' | bash
- cd "${VERSION}${VARIANT:+/$VARIANT}"
- image="jetty:${VERSION}${VARIANT:+-$VARIANT}"

script:
- docker build --pull -t "$image" .
- ~/official-images/test/run.sh "$image"
67 changes: 67 additions & 0 deletions 9.2-jre8/Dockerfile
Original file line number Diff line number Diff line change
@@ -0,0 +1,67 @@
FROM openjdk:8-jre

ENV JETTY_VERSION 9.2.29.v20191105
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-distribution/$JETTY_VERSION/jetty-distribution-$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 <[email protected]>
AED5EE6C45D0FE8D5D1B164F27DED4BF6216DB8F \
# Jesse McConnell <[email protected]>
2A684B57436A81FA8706B53C61C3351A438A3B7D \
# Joakim Erdfelt <[email protected]>
5989BAF76217B843D66BE55B2D0E1FB8FE4B68B4 \
# Joakim Erdfelt <[email protected]>
B59B67FD7904984367F931800818D9D68FB67BAC \
# Joakim Erdfelt <[email protected]>
BFBB21C246D7776836287A48A04E0C74ABB35FEA \
# Simone Bordet <[email protected]>
8B096546B1A8F02656B15D3B1677D141BCF3584D \
# Greg Wilkins <[email protected]>
FBA2B18D238AB852DF95745C76157BDF03D0DCD6 \
# Greg Wilkins <[email protected]>
5C9579B3DB2E506429319AAEF33B071B29559E1E

RUN set -xe \
&& mkdir /jetty-keys \
&& export GNUPGHOME=/jetty-keys; \
for key in $JETTY_GPG_KEYS; do \
for server in \
ha.pool.sks-keyservers.net \
p80.pool.sks-keyservers.net:80 \
ipv4.pool.sks-keyservers.net \
pgp.mit.edu ; \
do \
if gpg --batch --keyserver "$server" --recv-keys "$key"; then \
break; \
fi; \
done; \
done \
&& 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 \
&& gpg --batch --verify jetty.tar.gz.asc jetty.tar.gz \
&& tar -xvf jetty.tar.gz --strip-components=1 \
&& sed -i '/jetty-logging/d' etc/jetty.conf \
&& rm -fr jetty.tar.gz* \
&& mkdir -p "$JETTY_BASE" \
&& cd $JETTY_BASE \
&& modules="$(grep -- ^--module= "$JETTY_HOME/start.ini" | cut -d= -f2 | paste -d, -s)" \
&& java -jar "$JETTY_HOME/start.jar" --add-to-startd="$modules" \
&& mkdir -p "$TMPDIR" \
&& groupadd -r jetty && useradd -r -g jetty jetty \
&& chown -R jetty:jetty "$JETTY_HOME" "$JETTY_BASE" "$TMPDIR" \
&& rm -rf /tmp/hsperfdata_root

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"]
1 change: 1 addition & 0 deletions 9.2-jre8/arches
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
amd64
113 changes: 113 additions & 0 deletions 9.2-jre8/docker-entrypoint.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,113 @@
#!/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. Either delete
the $JETTY_START file or re-run
/generate-jetty.start.sh
from a Dockerfile
********************************************************************
EOWARN
fi
echo $(date +'%Y-%m-%d %H:%M:%S.000'):INFO:docker-entrypoint:jetty start from $JETTY_START
set -- $(cat $JETTY_START)
else
# Do a jetty dry run to set the final command
JAVA="$1"
shift
$JAVA $JAVA_OPTIONS "$@" --dry-run > $JETTY_START
if [ $(egrep -v '\\$' $JETTY_START | wc -l ) -gt 1 ] ; then
# command was more than a dry-run
cat $JETTY_START \
| awk '/\\$/ { printf "%s", substr($0, 1, length($0)-1); next } 1' \
| egrep -v '[^ ]*java .* org\.eclipse\.jetty\.xml\.XmlConfiguration '
exit
fi
set -- $(sed -e 's/ -Djava.io.tmpdir=[^ ]*//g' -e 's/\\$//' $JETTY_START)
fi
fi

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

exec "$@"
7 changes: 7 additions & 0 deletions 9.2-jre8/generate-jetty-start.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
#!/bin/sh

if [ -z "$JETTY_START" ] ; then
JETTY_START=$JETTY_BASE/jetty.start
fi
rm -f $JETTY_START
/docker-entrypoint.sh --dry-run | sed -e 's/ -Djava.io.tmpdir=[^ ]*//g' -e 's/\\$//' > $JETTY_START
67 changes: 67 additions & 0 deletions 9.3-jre8/Dockerfile
Original file line number Diff line number Diff line change
@@ -0,0 +1,67 @@
FROM openjdk:8-jre

ENV JETTY_VERSION 9.3.28.v20191105
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-distribution/$JETTY_VERSION/jetty-distribution-$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 <[email protected]>
AED5EE6C45D0FE8D5D1B164F27DED4BF6216DB8F \
# Jesse McConnell <[email protected]>
2A684B57436A81FA8706B53C61C3351A438A3B7D \
# Joakim Erdfelt <[email protected]>
5989BAF76217B843D66BE55B2D0E1FB8FE4B68B4 \
# Joakim Erdfelt <[email protected]>
B59B67FD7904984367F931800818D9D68FB67BAC \
# Joakim Erdfelt <[email protected]>
BFBB21C246D7776836287A48A04E0C74ABB35FEA \
# Simone Bordet <[email protected]>
8B096546B1A8F02656B15D3B1677D141BCF3584D \
# Greg Wilkins <[email protected]>
FBA2B18D238AB852DF95745C76157BDF03D0DCD6 \
# Greg Wilkins <[email protected]>
5C9579B3DB2E506429319AAEF33B071B29559E1E

RUN set -xe \
&& mkdir /jetty-keys \
&& export GNUPGHOME=/jetty-keys; \
for key in $JETTY_GPG_KEYS; do \
for server in \
ha.pool.sks-keyservers.net \
p80.pool.sks-keyservers.net:80 \
ipv4.pool.sks-keyservers.net \
pgp.mit.edu ; \
do \
if gpg --batch --keyserver "$server" --recv-keys "$key"; then \
break; \
fi; \
done; \
done \
&& 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 \
&& gpg --batch --verify jetty.tar.gz.asc jetty.tar.gz \
&& tar -xvf jetty.tar.gz --strip-components=1 \
&& sed -i '/jetty-logging/d' etc/jetty.conf \
&& rm -fr jetty.tar.gz* \
&& mkdir -p "$JETTY_BASE" \
&& cd $JETTY_BASE \
&& modules="$(grep -- ^--module= "$JETTY_HOME/start.ini" | cut -d= -f2 | paste -d, -s)" \
&& java -jar "$JETTY_HOME/start.jar" --add-to-startd="$modules" \
&& mkdir -p "$TMPDIR" \
&& groupadd -r jetty && useradd -r -g jetty jetty \
&& chown -R jetty:jetty "$JETTY_HOME" "$JETTY_BASE" "$TMPDIR" \
&& rm -rf /tmp/hsperfdata_root

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"]
1 change: 1 addition & 0 deletions 9.3-jre8/arches
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
amd64
113 changes: 113 additions & 0 deletions 9.3-jre8/docker-entrypoint.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,113 @@
#!/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. Either delete
the $JETTY_START file or re-run
/generate-jetty.start.sh
from a Dockerfile
********************************************************************
EOWARN
fi
echo $(date +'%Y-%m-%d %H:%M:%S.000'):INFO:docker-entrypoint:jetty start from $JETTY_START
set -- $(cat $JETTY_START)
else
# Do a jetty dry run to set the final command
JAVA="$1"
shift
$JAVA $JAVA_OPTIONS "$@" --dry-run > $JETTY_START
if [ $(egrep -v '\\$' $JETTY_START | wc -l ) -gt 1 ] ; then
# command was more than a dry-run
cat $JETTY_START \
| awk '/\\$/ { printf "%s", substr($0, 1, length($0)-1); next } 1' \
| egrep -v '[^ ]*java .* org\.eclipse\.jetty\.xml\.XmlConfiguration '
exit
fi
set -- $(sed -e 's/ -Djava.io.tmpdir=[^ ]*//g' -e 's/\\$//' $JETTY_START)
fi
fi

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

exec "$@"
Loading

0 comments on commit f4b8a22

Please sign in to comment.