diff --git a/.travis.yml b/.travis.yml index 7f74970f0..965120727 100644 --- a/.travis.yml +++ b/.travis.yml @@ -2,13 +2,20 @@ language: bash services: docker env: - - VERSION=5.0 - - VERSION=2.4 - - VERSION=2.3 - - VERSION=2.2 - - VERSION=2.1 - - VERSION=2.0 - - VERSION=1.5 + - VERSION=5.0 VARIANT= + - VERSION=5.0 VARIANT=alpine + - VERSION=2.4 VARIANT= + - VERSION=2.4 VARIANT=alpine + - VERSION=2.3 VARIANT= + - VERSION=2.3 VARIANT=alpine + - VERSION=2.2 VARIANT= + - VERSION=2.2 VARIANT=alpine + - VERSION=2.1 VARIANT= + - VERSION=2.1 VARIANT=alpine + - VERSION=2.0 VARIANT= + - VERSION=2.0 VARIANT=alpine + - VERSION=1.5 VARIANT= + - VERSION=1.5 VARIANT=alpine install: - git clone https://github.com/docker-library/official-images.git ~/official-images @@ -16,10 +23,10 @@ install: before_script: - env | sort - cd "$VERSION" - - image="logstash:$VERSION" + - image="logstash:${VERSION}${VARIANT:+-$VARIANT}" script: - - docker build -t "$image" . + - docker build -t "$image" "${VARIANT:-.}" - ~/official-images/test/run.sh "$image" after_script: diff --git a/1.5/Dockerfile b/1.5/Dockerfile index 445f8a59a..61c13ab34 100644 --- a/1.5/Dockerfile +++ b/1.5/Dockerfile @@ -28,11 +28,12 @@ RUN apt-key adv --keyserver ha.pool.sks-keyservers.net --recv-keys 46095ACC85485 RUN echo 'deb http://packages.elastic.co/logstash/1.5/debian stable main' > /etc/apt/sources.list.d/logstash.list -ENV LOGSTASH_VERSION 1:1.5.6-1 +ENV LOGSTASH_VERSION 1.5.6 +ENV LOGSTASH_DEB_VERSION 1:1.5.6-1 RUN set -x \ && apt-get update \ - && apt-get install -y --no-install-recommends logstash=$LOGSTASH_VERSION \ + && apt-get install -y --no-install-recommends "logstash=$LOGSTASH_DEB_VERSION" \ && rm -rf /var/lib/apt/lists/* ENV PATH /opt/logstash/bin:$PATH diff --git a/1.5/alpine/Dockerfile b/1.5/alpine/Dockerfile new file mode 100644 index 000000000..b6c3d062d --- /dev/null +++ b/1.5/alpine/Dockerfile @@ -0,0 +1,85 @@ +FROM openjdk:8-jre-alpine + +# ensure logstash user exists +RUN addgroup -S logstash && adduser -S -G logstash logstash + +# install plugin dependencies +RUN apk add --no-cache \ +# env: can't execute 'bash': No such file or directory + bash \ + libzmq + +# grab su-exec for easy step-down from root +RUN apk add --no-cache 'su-exec>=0.2' + +# https://www.elastic.co/guide/en/logstash/5.0/installing-logstash.html#_apt +# https://artifacts.elastic.co/GPG-KEY-elasticsearch +ENV GPG_KEY 46095ACC8548582C1A2699A9D27D666CD88E42B4 + +ENV LOGSTASH_PATH /opt/logstash/bin +ENV PATH $LOGSTASH_PATH:$PATH + +ENV LOGSTASH_VERSION 1.5.6 +ENV LOGSTASH_TARBALL="https://download.elastic.co/logstash/logstash/logstash-1.5.6.tar.gz" \ + LOGSTASH_TARBALL_ASC="" \ + LOGSTASH_TARBALL_SHA1="f3e4342f496e0d7e709de231daf624eb1fd80873" + +RUN set -ex; \ + \ + if [ -z "$LOGSTASH_TARBALL_SHA1" ] && [ -z "$LOGSTASH_TARBALL_ASC" ]; then \ + echo >&2 'error: have neither a SHA1 _or_ a signature file -- cannot verify download!'; \ + exit 1; \ + fi; \ + \ + apk add --no-cache --virtual .fetch-deps \ + ca-certificates \ + gnupg \ + openssl \ + tar \ + ; \ + \ + wget -O logstash.tar.gz "$LOGSTASH_TARBALL"; \ + \ + if [ "$LOGSTASH_TARBALL_SHA1" ]; then \ + echo "$LOGSTASH_TARBALL_SHA1 *logstash.tar.gz" | sha1sum -c -; \ + fi; \ + \ + if [ "$LOGSTASH_TARBALL_ASC" ]; then \ + wget -O logstash.tar.gz.asc "$LOGSTASH_TARBALL_ASC"; \ + export GNUPGHOME="$(mktemp -d)"; \ + gpg --keyserver ha.pool.sks-keyservers.net --recv-keys "$GPG_KEY"; \ + gpg --batch --verify logstash.tar.gz.asc logstash.tar.gz; \ + rm -r "$GNUPGHOME" logstash.tar.gz.asc; \ + fi; \ + \ + dir="$(dirname "$LOGSTASH_PATH")"; \ + \ + mkdir -p "$dir"; \ + tar -xf logstash.tar.gz --strip-components=1 -C "$dir"; \ + rm logstash.tar.gz; \ + \ + apk del .fetch-deps; \ + \ + export LS_SETTINGS_DIR="$dir/config"; \ +# if the "log4j2.properties" file exists (logstash 5.x), let's empty it out so we get the default: "logging only errors to the console" + if [ -f "$LS_SETTINGS_DIR/log4j2.properties" ]; then \ + cp "$LS_SETTINGS_DIR/log4j2.properties" "$LS_SETTINGS_DIR/log4j2.properties.dist"; \ + truncate -s 0 "$LS_SETTINGS_DIR/log4j2.properties"; \ + fi; \ + \ +# set up some file permissions + for userDir in \ + "$dir/config" \ + "$dir/data" \ + ; do \ + if [ -d "$userDir" ]; then \ + chown -R logstash:logstash "$userDir"; \ + fi; \ + done; \ + \ + logstash --version + +COPY docker-entrypoint.sh / + +ENTRYPOINT ["/docker-entrypoint.sh"] +CMD ["-e", ""] diff --git a/1.5/alpine/docker-entrypoint.sh b/1.5/alpine/docker-entrypoint.sh new file mode 100755 index 000000000..1d67a9f49 --- /dev/null +++ b/1.5/alpine/docker-entrypoint.sh @@ -0,0 +1,15 @@ +#!/bin/bash +set -e + +# first arg is `-f` or `--some-option` +if [ "${1#-}" != "$1" ]; then + set -- logstash "$@" +fi + +# Run as user "logstash" if the command is "logstash" +# allow the container to be started with `--user` +if [ "$1" = 'logstash' -a "$(id -u)" = '0' ]; then + set -- su-exec logstash "$@" +fi + +exec "$@" diff --git a/1.5/docker-entrypoint.sh b/1.5/docker-entrypoint.sh index dea4db59b..4b65b4212 100755 --- a/1.5/docker-entrypoint.sh +++ b/1.5/docker-entrypoint.sh @@ -1,9 +1,8 @@ #!/bin/bash - set -e -# Add logstash as command if needed -if [ "${1:0:1}" = '-' ]; then +# first arg is `-f` or `--some-option` +if [ "${1#-}" != "$1" ]; then set -- logstash "$@" fi diff --git a/2.0/Dockerfile b/2.0/Dockerfile index 8b3d411ca..87662798f 100644 --- a/2.0/Dockerfile +++ b/2.0/Dockerfile @@ -28,11 +28,12 @@ RUN apt-key adv --keyserver ha.pool.sks-keyservers.net --recv-keys 46095ACC85485 RUN echo 'deb http://packages.elastic.co/logstash/2.0/debian stable main' > /etc/apt/sources.list.d/logstash.list -ENV LOGSTASH_VERSION 1:2.0.0-1 +ENV LOGSTASH_VERSION 2.0.0 +ENV LOGSTASH_DEB_VERSION 1:2.0.0-1 RUN set -x \ && apt-get update \ - && apt-get install -y --no-install-recommends logstash=$LOGSTASH_VERSION \ + && apt-get install -y --no-install-recommends "logstash=$LOGSTASH_DEB_VERSION" \ && rm -rf /var/lib/apt/lists/* ENV PATH /opt/logstash/bin:$PATH diff --git a/2.0/alpine/Dockerfile b/2.0/alpine/Dockerfile new file mode 100644 index 000000000..3dcb2f36c --- /dev/null +++ b/2.0/alpine/Dockerfile @@ -0,0 +1,85 @@ +FROM openjdk:8-jre-alpine + +# ensure logstash user exists +RUN addgroup -S logstash && adduser -S -G logstash logstash + +# install plugin dependencies +RUN apk add --no-cache \ +# env: can't execute 'bash': No such file or directory + bash \ + libzmq + +# grab su-exec for easy step-down from root +RUN apk add --no-cache 'su-exec>=0.2' + +# https://www.elastic.co/guide/en/logstash/5.0/installing-logstash.html#_apt +# https://artifacts.elastic.co/GPG-KEY-elasticsearch +ENV GPG_KEY 46095ACC8548582C1A2699A9D27D666CD88E42B4 + +ENV LOGSTASH_PATH /opt/logstash/bin +ENV PATH $LOGSTASH_PATH:$PATH + +ENV LOGSTASH_VERSION 2.0.0 +ENV LOGSTASH_TARBALL="https://download.elastic.co/logstash/logstash/logstash-2.0.0.tar.gz" \ + LOGSTASH_TARBALL_ASC="" \ + LOGSTASH_TARBALL_SHA1="f0961520dd9590d3b600c877be66f79f94a05f80" + +RUN set -ex; \ + \ + if [ -z "$LOGSTASH_TARBALL_SHA1" ] && [ -z "$LOGSTASH_TARBALL_ASC" ]; then \ + echo >&2 'error: have neither a SHA1 _or_ a signature file -- cannot verify download!'; \ + exit 1; \ + fi; \ + \ + apk add --no-cache --virtual .fetch-deps \ + ca-certificates \ + gnupg \ + openssl \ + tar \ + ; \ + \ + wget -O logstash.tar.gz "$LOGSTASH_TARBALL"; \ + \ + if [ "$LOGSTASH_TARBALL_SHA1" ]; then \ + echo "$LOGSTASH_TARBALL_SHA1 *logstash.tar.gz" | sha1sum -c -; \ + fi; \ + \ + if [ "$LOGSTASH_TARBALL_ASC" ]; then \ + wget -O logstash.tar.gz.asc "$LOGSTASH_TARBALL_ASC"; \ + export GNUPGHOME="$(mktemp -d)"; \ + gpg --keyserver ha.pool.sks-keyservers.net --recv-keys "$GPG_KEY"; \ + gpg --batch --verify logstash.tar.gz.asc logstash.tar.gz; \ + rm -r "$GNUPGHOME" logstash.tar.gz.asc; \ + fi; \ + \ + dir="$(dirname "$LOGSTASH_PATH")"; \ + \ + mkdir -p "$dir"; \ + tar -xf logstash.tar.gz --strip-components=1 -C "$dir"; \ + rm logstash.tar.gz; \ + \ + apk del .fetch-deps; \ + \ + export LS_SETTINGS_DIR="$dir/config"; \ +# if the "log4j2.properties" file exists (logstash 5.x), let's empty it out so we get the default: "logging only errors to the console" + if [ -f "$LS_SETTINGS_DIR/log4j2.properties" ]; then \ + cp "$LS_SETTINGS_DIR/log4j2.properties" "$LS_SETTINGS_DIR/log4j2.properties.dist"; \ + truncate -s 0 "$LS_SETTINGS_DIR/log4j2.properties"; \ + fi; \ + \ +# set up some file permissions + for userDir in \ + "$dir/config" \ + "$dir/data" \ + ; do \ + if [ -d "$userDir" ]; then \ + chown -R logstash:logstash "$userDir"; \ + fi; \ + done; \ + \ + logstash --version + +COPY docker-entrypoint.sh / + +ENTRYPOINT ["/docker-entrypoint.sh"] +CMD ["-e", ""] diff --git a/2.0/alpine/docker-entrypoint.sh b/2.0/alpine/docker-entrypoint.sh new file mode 100755 index 000000000..1d67a9f49 --- /dev/null +++ b/2.0/alpine/docker-entrypoint.sh @@ -0,0 +1,15 @@ +#!/bin/bash +set -e + +# first arg is `-f` or `--some-option` +if [ "${1#-}" != "$1" ]; then + set -- logstash "$@" +fi + +# Run as user "logstash" if the command is "logstash" +# allow the container to be started with `--user` +if [ "$1" = 'logstash' -a "$(id -u)" = '0' ]; then + set -- su-exec logstash "$@" +fi + +exec "$@" diff --git a/2.0/docker-entrypoint.sh b/2.0/docker-entrypoint.sh index dea4db59b..4b65b4212 100755 --- a/2.0/docker-entrypoint.sh +++ b/2.0/docker-entrypoint.sh @@ -1,9 +1,8 @@ #!/bin/bash - set -e -# Add logstash as command if needed -if [ "${1:0:1}" = '-' ]; then +# first arg is `-f` or `--some-option` +if [ "${1#-}" != "$1" ]; then set -- logstash "$@" fi diff --git a/2.1/Dockerfile b/2.1/Dockerfile index 2d58f3f47..411814f32 100644 --- a/2.1/Dockerfile +++ b/2.1/Dockerfile @@ -28,11 +28,12 @@ RUN apt-key adv --keyserver ha.pool.sks-keyservers.net --recv-keys 46095ACC85485 RUN echo 'deb http://packages.elastic.co/logstash/2.1/debian stable main' > /etc/apt/sources.list.d/logstash.list -ENV LOGSTASH_VERSION 1:2.1.3-1 +ENV LOGSTASH_VERSION 2.1.3 +ENV LOGSTASH_DEB_VERSION 1:2.1.3-1 RUN set -x \ && apt-get update \ - && apt-get install -y --no-install-recommends logstash=$LOGSTASH_VERSION \ + && apt-get install -y --no-install-recommends "logstash=$LOGSTASH_DEB_VERSION" \ && rm -rf /var/lib/apt/lists/* ENV PATH /opt/logstash/bin:$PATH diff --git a/2.1/alpine/Dockerfile b/2.1/alpine/Dockerfile new file mode 100644 index 000000000..bfa7016be --- /dev/null +++ b/2.1/alpine/Dockerfile @@ -0,0 +1,85 @@ +FROM openjdk:8-jre-alpine + +# ensure logstash user exists +RUN addgroup -S logstash && adduser -S -G logstash logstash + +# install plugin dependencies +RUN apk add --no-cache \ +# env: can't execute 'bash': No such file or directory + bash \ + libzmq + +# grab su-exec for easy step-down from root +RUN apk add --no-cache 'su-exec>=0.2' + +# https://www.elastic.co/guide/en/logstash/5.0/installing-logstash.html#_apt +# https://artifacts.elastic.co/GPG-KEY-elasticsearch +ENV GPG_KEY 46095ACC8548582C1A2699A9D27D666CD88E42B4 + +ENV LOGSTASH_PATH /opt/logstash/bin +ENV PATH $LOGSTASH_PATH:$PATH + +ENV LOGSTASH_VERSION 2.1.3 +ENV LOGSTASH_TARBALL="https://download.elastic.co/logstash/logstash/logstash-2.1.3.tar.gz" \ + LOGSTASH_TARBALL_ASC="" \ + LOGSTASH_TARBALL_SHA1="283f6d8842df52c7d69f77b5c6d4755ee942b291" + +RUN set -ex; \ + \ + if [ -z "$LOGSTASH_TARBALL_SHA1" ] && [ -z "$LOGSTASH_TARBALL_ASC" ]; then \ + echo >&2 'error: have neither a SHA1 _or_ a signature file -- cannot verify download!'; \ + exit 1; \ + fi; \ + \ + apk add --no-cache --virtual .fetch-deps \ + ca-certificates \ + gnupg \ + openssl \ + tar \ + ; \ + \ + wget -O logstash.tar.gz "$LOGSTASH_TARBALL"; \ + \ + if [ "$LOGSTASH_TARBALL_SHA1" ]; then \ + echo "$LOGSTASH_TARBALL_SHA1 *logstash.tar.gz" | sha1sum -c -; \ + fi; \ + \ + if [ "$LOGSTASH_TARBALL_ASC" ]; then \ + wget -O logstash.tar.gz.asc "$LOGSTASH_TARBALL_ASC"; \ + export GNUPGHOME="$(mktemp -d)"; \ + gpg --keyserver ha.pool.sks-keyservers.net --recv-keys "$GPG_KEY"; \ + gpg --batch --verify logstash.tar.gz.asc logstash.tar.gz; \ + rm -r "$GNUPGHOME" logstash.tar.gz.asc; \ + fi; \ + \ + dir="$(dirname "$LOGSTASH_PATH")"; \ + \ + mkdir -p "$dir"; \ + tar -xf logstash.tar.gz --strip-components=1 -C "$dir"; \ + rm logstash.tar.gz; \ + \ + apk del .fetch-deps; \ + \ + export LS_SETTINGS_DIR="$dir/config"; \ +# if the "log4j2.properties" file exists (logstash 5.x), let's empty it out so we get the default: "logging only errors to the console" + if [ -f "$LS_SETTINGS_DIR/log4j2.properties" ]; then \ + cp "$LS_SETTINGS_DIR/log4j2.properties" "$LS_SETTINGS_DIR/log4j2.properties.dist"; \ + truncate -s 0 "$LS_SETTINGS_DIR/log4j2.properties"; \ + fi; \ + \ +# set up some file permissions + for userDir in \ + "$dir/config" \ + "$dir/data" \ + ; do \ + if [ -d "$userDir" ]; then \ + chown -R logstash:logstash "$userDir"; \ + fi; \ + done; \ + \ + logstash --version + +COPY docker-entrypoint.sh / + +ENTRYPOINT ["/docker-entrypoint.sh"] +CMD ["-e", ""] diff --git a/2.1/alpine/docker-entrypoint.sh b/2.1/alpine/docker-entrypoint.sh new file mode 100755 index 000000000..1d67a9f49 --- /dev/null +++ b/2.1/alpine/docker-entrypoint.sh @@ -0,0 +1,15 @@ +#!/bin/bash +set -e + +# first arg is `-f` or `--some-option` +if [ "${1#-}" != "$1" ]; then + set -- logstash "$@" +fi + +# Run as user "logstash" if the command is "logstash" +# allow the container to be started with `--user` +if [ "$1" = 'logstash' -a "$(id -u)" = '0' ]; then + set -- su-exec logstash "$@" +fi + +exec "$@" diff --git a/2.1/docker-entrypoint.sh b/2.1/docker-entrypoint.sh index dea4db59b..4b65b4212 100755 --- a/2.1/docker-entrypoint.sh +++ b/2.1/docker-entrypoint.sh @@ -1,9 +1,8 @@ #!/bin/bash - set -e -# Add logstash as command if needed -if [ "${1:0:1}" = '-' ]; then +# first arg is `-f` or `--some-option` +if [ "${1#-}" != "$1" ]; then set -- logstash "$@" fi diff --git a/2.2/Dockerfile b/2.2/Dockerfile index 3e87f8e85..7fef69af7 100644 --- a/2.2/Dockerfile +++ b/2.2/Dockerfile @@ -28,11 +28,12 @@ RUN apt-key adv --keyserver ha.pool.sks-keyservers.net --recv-keys 46095ACC85485 RUN echo 'deb http://packages.elastic.co/logstash/2.2/debian stable main' > /etc/apt/sources.list.d/logstash.list -ENV LOGSTASH_VERSION 1:2.2.4-1 +ENV LOGSTASH_VERSION 2.2.4 +ENV LOGSTASH_DEB_VERSION 1:2.2.4-1 RUN set -x \ && apt-get update \ - && apt-get install -y --no-install-recommends logstash=$LOGSTASH_VERSION \ + && apt-get install -y --no-install-recommends "logstash=$LOGSTASH_DEB_VERSION" \ && rm -rf /var/lib/apt/lists/* ENV PATH /opt/logstash/bin:$PATH diff --git a/2.2/alpine/Dockerfile b/2.2/alpine/Dockerfile new file mode 100644 index 000000000..1b72f067a --- /dev/null +++ b/2.2/alpine/Dockerfile @@ -0,0 +1,85 @@ +FROM openjdk:8-jre-alpine + +# ensure logstash user exists +RUN addgroup -S logstash && adduser -S -G logstash logstash + +# install plugin dependencies +RUN apk add --no-cache \ +# env: can't execute 'bash': No such file or directory + bash \ + libzmq + +# grab su-exec for easy step-down from root +RUN apk add --no-cache 'su-exec>=0.2' + +# https://www.elastic.co/guide/en/logstash/5.0/installing-logstash.html#_apt +# https://artifacts.elastic.co/GPG-KEY-elasticsearch +ENV GPG_KEY 46095ACC8548582C1A2699A9D27D666CD88E42B4 + +ENV LOGSTASH_PATH /opt/logstash/bin +ENV PATH $LOGSTASH_PATH:$PATH + +ENV LOGSTASH_VERSION 2.2.4 +ENV LOGSTASH_TARBALL="https://download.elastic.co/logstash/logstash/logstash-2.2.4.tar.gz" \ + LOGSTASH_TARBALL_ASC="" \ + LOGSTASH_TARBALL_SHA1="4e64cbc617d1b9cbf20869daab22cb4df68895ed" + +RUN set -ex; \ + \ + if [ -z "$LOGSTASH_TARBALL_SHA1" ] && [ -z "$LOGSTASH_TARBALL_ASC" ]; then \ + echo >&2 'error: have neither a SHA1 _or_ a signature file -- cannot verify download!'; \ + exit 1; \ + fi; \ + \ + apk add --no-cache --virtual .fetch-deps \ + ca-certificates \ + gnupg \ + openssl \ + tar \ + ; \ + \ + wget -O logstash.tar.gz "$LOGSTASH_TARBALL"; \ + \ + if [ "$LOGSTASH_TARBALL_SHA1" ]; then \ + echo "$LOGSTASH_TARBALL_SHA1 *logstash.tar.gz" | sha1sum -c -; \ + fi; \ + \ + if [ "$LOGSTASH_TARBALL_ASC" ]; then \ + wget -O logstash.tar.gz.asc "$LOGSTASH_TARBALL_ASC"; \ + export GNUPGHOME="$(mktemp -d)"; \ + gpg --keyserver ha.pool.sks-keyservers.net --recv-keys "$GPG_KEY"; \ + gpg --batch --verify logstash.tar.gz.asc logstash.tar.gz; \ + rm -r "$GNUPGHOME" logstash.tar.gz.asc; \ + fi; \ + \ + dir="$(dirname "$LOGSTASH_PATH")"; \ + \ + mkdir -p "$dir"; \ + tar -xf logstash.tar.gz --strip-components=1 -C "$dir"; \ + rm logstash.tar.gz; \ + \ + apk del .fetch-deps; \ + \ + export LS_SETTINGS_DIR="$dir/config"; \ +# if the "log4j2.properties" file exists (logstash 5.x), let's empty it out so we get the default: "logging only errors to the console" + if [ -f "$LS_SETTINGS_DIR/log4j2.properties" ]; then \ + cp "$LS_SETTINGS_DIR/log4j2.properties" "$LS_SETTINGS_DIR/log4j2.properties.dist"; \ + truncate -s 0 "$LS_SETTINGS_DIR/log4j2.properties"; \ + fi; \ + \ +# set up some file permissions + for userDir in \ + "$dir/config" \ + "$dir/data" \ + ; do \ + if [ -d "$userDir" ]; then \ + chown -R logstash:logstash "$userDir"; \ + fi; \ + done; \ + \ + logstash --version + +COPY docker-entrypoint.sh / + +ENTRYPOINT ["/docker-entrypoint.sh"] +CMD ["-e", ""] diff --git a/2.2/alpine/docker-entrypoint.sh b/2.2/alpine/docker-entrypoint.sh new file mode 100755 index 000000000..1d67a9f49 --- /dev/null +++ b/2.2/alpine/docker-entrypoint.sh @@ -0,0 +1,15 @@ +#!/bin/bash +set -e + +# first arg is `-f` or `--some-option` +if [ "${1#-}" != "$1" ]; then + set -- logstash "$@" +fi + +# Run as user "logstash" if the command is "logstash" +# allow the container to be started with `--user` +if [ "$1" = 'logstash' -a "$(id -u)" = '0' ]; then + set -- su-exec logstash "$@" +fi + +exec "$@" diff --git a/2.2/docker-entrypoint.sh b/2.2/docker-entrypoint.sh index dea4db59b..4b65b4212 100755 --- a/2.2/docker-entrypoint.sh +++ b/2.2/docker-entrypoint.sh @@ -1,9 +1,8 @@ #!/bin/bash - set -e -# Add logstash as command if needed -if [ "${1:0:1}" = '-' ]; then +# first arg is `-f` or `--some-option` +if [ "${1#-}" != "$1" ]; then set -- logstash "$@" fi diff --git a/2.3/Dockerfile b/2.3/Dockerfile index 761c96aa7..94e83effb 100644 --- a/2.3/Dockerfile +++ b/2.3/Dockerfile @@ -28,11 +28,12 @@ RUN apt-key adv --keyserver ha.pool.sks-keyservers.net --recv-keys 46095ACC85485 RUN echo 'deb http://packages.elastic.co/logstash/2.3/debian stable main' > /etc/apt/sources.list.d/logstash.list -ENV LOGSTASH_VERSION 1:2.3.4-1 +ENV LOGSTASH_VERSION 2.3.4 +ENV LOGSTASH_DEB_VERSION 1:2.3.4-1 RUN set -x \ && apt-get update \ - && apt-get install -y --no-install-recommends logstash=$LOGSTASH_VERSION \ + && apt-get install -y --no-install-recommends "logstash=$LOGSTASH_DEB_VERSION" \ && rm -rf /var/lib/apt/lists/* ENV PATH /opt/logstash/bin:$PATH diff --git a/2.3/alpine/Dockerfile b/2.3/alpine/Dockerfile new file mode 100644 index 000000000..2665fe360 --- /dev/null +++ b/2.3/alpine/Dockerfile @@ -0,0 +1,85 @@ +FROM openjdk:8-jre-alpine + +# ensure logstash user exists +RUN addgroup -S logstash && adduser -S -G logstash logstash + +# install plugin dependencies +RUN apk add --no-cache \ +# env: can't execute 'bash': No such file or directory + bash \ + libzmq + +# grab su-exec for easy step-down from root +RUN apk add --no-cache 'su-exec>=0.2' + +# https://www.elastic.co/guide/en/logstash/5.0/installing-logstash.html#_apt +# https://artifacts.elastic.co/GPG-KEY-elasticsearch +ENV GPG_KEY 46095ACC8548582C1A2699A9D27D666CD88E42B4 + +ENV LOGSTASH_PATH /opt/logstash/bin +ENV PATH $LOGSTASH_PATH:$PATH + +ENV LOGSTASH_VERSION 2.3.4 +ENV LOGSTASH_TARBALL="https://download.elastic.co/logstash/logstash/logstash-2.3.4.tar.gz" \ + LOGSTASH_TARBALL_ASC="" \ + LOGSTASH_TARBALL_SHA1="5fc3fc36752018c66a476068f2c1cc61e96b09cb" + +RUN set -ex; \ + \ + if [ -z "$LOGSTASH_TARBALL_SHA1" ] && [ -z "$LOGSTASH_TARBALL_ASC" ]; then \ + echo >&2 'error: have neither a SHA1 _or_ a signature file -- cannot verify download!'; \ + exit 1; \ + fi; \ + \ + apk add --no-cache --virtual .fetch-deps \ + ca-certificates \ + gnupg \ + openssl \ + tar \ + ; \ + \ + wget -O logstash.tar.gz "$LOGSTASH_TARBALL"; \ + \ + if [ "$LOGSTASH_TARBALL_SHA1" ]; then \ + echo "$LOGSTASH_TARBALL_SHA1 *logstash.tar.gz" | sha1sum -c -; \ + fi; \ + \ + if [ "$LOGSTASH_TARBALL_ASC" ]; then \ + wget -O logstash.tar.gz.asc "$LOGSTASH_TARBALL_ASC"; \ + export GNUPGHOME="$(mktemp -d)"; \ + gpg --keyserver ha.pool.sks-keyservers.net --recv-keys "$GPG_KEY"; \ + gpg --batch --verify logstash.tar.gz.asc logstash.tar.gz; \ + rm -r "$GNUPGHOME" logstash.tar.gz.asc; \ + fi; \ + \ + dir="$(dirname "$LOGSTASH_PATH")"; \ + \ + mkdir -p "$dir"; \ + tar -xf logstash.tar.gz --strip-components=1 -C "$dir"; \ + rm logstash.tar.gz; \ + \ + apk del .fetch-deps; \ + \ + export LS_SETTINGS_DIR="$dir/config"; \ +# if the "log4j2.properties" file exists (logstash 5.x), let's empty it out so we get the default: "logging only errors to the console" + if [ -f "$LS_SETTINGS_DIR/log4j2.properties" ]; then \ + cp "$LS_SETTINGS_DIR/log4j2.properties" "$LS_SETTINGS_DIR/log4j2.properties.dist"; \ + truncate -s 0 "$LS_SETTINGS_DIR/log4j2.properties"; \ + fi; \ + \ +# set up some file permissions + for userDir in \ + "$dir/config" \ + "$dir/data" \ + ; do \ + if [ -d "$userDir" ]; then \ + chown -R logstash:logstash "$userDir"; \ + fi; \ + done; \ + \ + logstash --version + +COPY docker-entrypoint.sh / + +ENTRYPOINT ["/docker-entrypoint.sh"] +CMD ["-e", ""] diff --git a/2.3/alpine/docker-entrypoint.sh b/2.3/alpine/docker-entrypoint.sh new file mode 100755 index 000000000..1d67a9f49 --- /dev/null +++ b/2.3/alpine/docker-entrypoint.sh @@ -0,0 +1,15 @@ +#!/bin/bash +set -e + +# first arg is `-f` or `--some-option` +if [ "${1#-}" != "$1" ]; then + set -- logstash "$@" +fi + +# Run as user "logstash" if the command is "logstash" +# allow the container to be started with `--user` +if [ "$1" = 'logstash' -a "$(id -u)" = '0' ]; then + set -- su-exec logstash "$@" +fi + +exec "$@" diff --git a/2.3/docker-entrypoint.sh b/2.3/docker-entrypoint.sh index dea4db59b..4b65b4212 100755 --- a/2.3/docker-entrypoint.sh +++ b/2.3/docker-entrypoint.sh @@ -1,9 +1,8 @@ #!/bin/bash - set -e -# Add logstash as command if needed -if [ "${1:0:1}" = '-' ]; then +# first arg is `-f` or `--some-option` +if [ "${1#-}" != "$1" ]; then set -- logstash "$@" fi diff --git a/2.4/Dockerfile b/2.4/Dockerfile index 5359a403c..5cedd0d90 100644 --- a/2.4/Dockerfile +++ b/2.4/Dockerfile @@ -28,11 +28,12 @@ RUN apt-key adv --keyserver ha.pool.sks-keyservers.net --recv-keys 46095ACC85485 RUN echo 'deb http://packages.elastic.co/logstash/2.4/debian stable main' > /etc/apt/sources.list.d/logstash.list -ENV LOGSTASH_VERSION 1:2.4.1-1 +ENV LOGSTASH_VERSION 2.4.1 +ENV LOGSTASH_DEB_VERSION 1:2.4.1-1 RUN set -x \ && apt-get update \ - && apt-get install -y --no-install-recommends logstash=$LOGSTASH_VERSION \ + && apt-get install -y --no-install-recommends "logstash=$LOGSTASH_DEB_VERSION" \ && rm -rf /var/lib/apt/lists/* ENV PATH /opt/logstash/bin:$PATH diff --git a/2.4/alpine/Dockerfile b/2.4/alpine/Dockerfile new file mode 100644 index 000000000..6633185f7 --- /dev/null +++ b/2.4/alpine/Dockerfile @@ -0,0 +1,85 @@ +FROM openjdk:8-jre-alpine + +# ensure logstash user exists +RUN addgroup -S logstash && adduser -S -G logstash logstash + +# install plugin dependencies +RUN apk add --no-cache \ +# env: can't execute 'bash': No such file or directory + bash \ + libzmq + +# grab su-exec for easy step-down from root +RUN apk add --no-cache 'su-exec>=0.2' + +# https://www.elastic.co/guide/en/logstash/5.0/installing-logstash.html#_apt +# https://artifacts.elastic.co/GPG-KEY-elasticsearch +ENV GPG_KEY 46095ACC8548582C1A2699A9D27D666CD88E42B4 + +ENV LOGSTASH_PATH /opt/logstash/bin +ENV PATH $LOGSTASH_PATH:$PATH + +ENV LOGSTASH_VERSION 2.4.1 +ENV LOGSTASH_TARBALL="https://download.elastic.co/logstash/logstash/logstash-2.4.1.tar.gz" \ + LOGSTASH_TARBALL_ASC="" \ + LOGSTASH_TARBALL_SHA1="5ee4f3fa0ad4b182b3f00b4181a20c4e31a907b4" + +RUN set -ex; \ + \ + if [ -z "$LOGSTASH_TARBALL_SHA1" ] && [ -z "$LOGSTASH_TARBALL_ASC" ]; then \ + echo >&2 'error: have neither a SHA1 _or_ a signature file -- cannot verify download!'; \ + exit 1; \ + fi; \ + \ + apk add --no-cache --virtual .fetch-deps \ + ca-certificates \ + gnupg \ + openssl \ + tar \ + ; \ + \ + wget -O logstash.tar.gz "$LOGSTASH_TARBALL"; \ + \ + if [ "$LOGSTASH_TARBALL_SHA1" ]; then \ + echo "$LOGSTASH_TARBALL_SHA1 *logstash.tar.gz" | sha1sum -c -; \ + fi; \ + \ + if [ "$LOGSTASH_TARBALL_ASC" ]; then \ + wget -O logstash.tar.gz.asc "$LOGSTASH_TARBALL_ASC"; \ + export GNUPGHOME="$(mktemp -d)"; \ + gpg --keyserver ha.pool.sks-keyservers.net --recv-keys "$GPG_KEY"; \ + gpg --batch --verify logstash.tar.gz.asc logstash.tar.gz; \ + rm -r "$GNUPGHOME" logstash.tar.gz.asc; \ + fi; \ + \ + dir="$(dirname "$LOGSTASH_PATH")"; \ + \ + mkdir -p "$dir"; \ + tar -xf logstash.tar.gz --strip-components=1 -C "$dir"; \ + rm logstash.tar.gz; \ + \ + apk del .fetch-deps; \ + \ + export LS_SETTINGS_DIR="$dir/config"; \ +# if the "log4j2.properties" file exists (logstash 5.x), let's empty it out so we get the default: "logging only errors to the console" + if [ -f "$LS_SETTINGS_DIR/log4j2.properties" ]; then \ + cp "$LS_SETTINGS_DIR/log4j2.properties" "$LS_SETTINGS_DIR/log4j2.properties.dist"; \ + truncate -s 0 "$LS_SETTINGS_DIR/log4j2.properties"; \ + fi; \ + \ +# set up some file permissions + for userDir in \ + "$dir/config" \ + "$dir/data" \ + ; do \ + if [ -d "$userDir" ]; then \ + chown -R logstash:logstash "$userDir"; \ + fi; \ + done; \ + \ + logstash --version + +COPY docker-entrypoint.sh / + +ENTRYPOINT ["/docker-entrypoint.sh"] +CMD ["-e", ""] diff --git a/2.4/alpine/docker-entrypoint.sh b/2.4/alpine/docker-entrypoint.sh new file mode 100755 index 000000000..1d67a9f49 --- /dev/null +++ b/2.4/alpine/docker-entrypoint.sh @@ -0,0 +1,15 @@ +#!/bin/bash +set -e + +# first arg is `-f` or `--some-option` +if [ "${1#-}" != "$1" ]; then + set -- logstash "$@" +fi + +# Run as user "logstash" if the command is "logstash" +# allow the container to be started with `--user` +if [ "$1" = 'logstash' -a "$(id -u)" = '0' ]; then + set -- su-exec logstash "$@" +fi + +exec "$@" diff --git a/2.4/docker-entrypoint.sh b/2.4/docker-entrypoint.sh index dea4db59b..4b65b4212 100755 --- a/2.4/docker-entrypoint.sh +++ b/2.4/docker-entrypoint.sh @@ -1,9 +1,8 @@ #!/bin/bash - set -e -# Add logstash as command if needed -if [ "${1:0:1}" = '-' ]; then +# first arg is `-f` or `--some-option` +if [ "${1#-}" != "$1" ]; then set -- logstash "$@" fi diff --git a/5.0/Dockerfile b/5.0/Dockerfile index 9b44e4cfa..866bde1c6 100644 --- a/5.0/Dockerfile +++ b/5.0/Dockerfile @@ -28,11 +28,12 @@ RUN apt-key adv --keyserver ha.pool.sks-keyservers.net --recv-keys 46095ACC85485 RUN echo 'deb https://artifacts.elastic.co/packages/5.x/apt stable main' > /etc/apt/sources.list.d/logstash.list -ENV LOGSTASH_VERSION 1:5.0.2-1 +ENV LOGSTASH_VERSION 5.0.2 +ENV LOGSTASH_DEB_VERSION 1:5.0.2-1 RUN set -x \ && apt-get update \ - && apt-get install -y --no-install-recommends logstash=$LOGSTASH_VERSION \ + && apt-get install -y --no-install-recommends "logstash=$LOGSTASH_DEB_VERSION" \ && rm -rf /var/lib/apt/lists/* ENV PATH /usr/share/logstash/bin:$PATH diff --git a/5.0/alpine/Dockerfile b/5.0/alpine/Dockerfile new file mode 100644 index 000000000..463289db4 --- /dev/null +++ b/5.0/alpine/Dockerfile @@ -0,0 +1,85 @@ +FROM openjdk:8-jre-alpine + +# ensure logstash user exists +RUN addgroup -S logstash && adduser -S -G logstash logstash + +# install plugin dependencies +RUN apk add --no-cache \ +# env: can't execute 'bash': No such file or directory + bash \ + libzmq + +# grab su-exec for easy step-down from root +RUN apk add --no-cache 'su-exec>=0.2' + +# https://www.elastic.co/guide/en/logstash/5.0/installing-logstash.html#_apt +# https://artifacts.elastic.co/GPG-KEY-elasticsearch +ENV GPG_KEY 46095ACC8548582C1A2699A9D27D666CD88E42B4 + +ENV LOGSTASH_PATH /usr/share/logstash/bin +ENV PATH $LOGSTASH_PATH:$PATH + +ENV LOGSTASH_VERSION 5.0.2 +ENV LOGSTASH_TARBALL="https://artifacts.elastic.co/downloads/logstash/logstash-5.0.2.tar.gz" \ + LOGSTASH_TARBALL_ASC="https://artifacts.elastic.co/downloads/logstash/logstash-5.0.2.tar.gz.asc" \ + LOGSTASH_TARBALL_SHA1="e344558d0e8e964a66cbe67ec09f506b7a8be2e7" + +RUN set -ex; \ + \ + if [ -z "$LOGSTASH_TARBALL_SHA1" ] && [ -z "$LOGSTASH_TARBALL_ASC" ]; then \ + echo >&2 'error: have neither a SHA1 _or_ a signature file -- cannot verify download!'; \ + exit 1; \ + fi; \ + \ + apk add --no-cache --virtual .fetch-deps \ + ca-certificates \ + gnupg \ + openssl \ + tar \ + ; \ + \ + wget -O logstash.tar.gz "$LOGSTASH_TARBALL"; \ + \ + if [ "$LOGSTASH_TARBALL_SHA1" ]; then \ + echo "$LOGSTASH_TARBALL_SHA1 *logstash.tar.gz" | sha1sum -c -; \ + fi; \ + \ + if [ "$LOGSTASH_TARBALL_ASC" ]; then \ + wget -O logstash.tar.gz.asc "$LOGSTASH_TARBALL_ASC"; \ + export GNUPGHOME="$(mktemp -d)"; \ + gpg --keyserver ha.pool.sks-keyservers.net --recv-keys "$GPG_KEY"; \ + gpg --batch --verify logstash.tar.gz.asc logstash.tar.gz; \ + rm -r "$GNUPGHOME" logstash.tar.gz.asc; \ + fi; \ + \ + dir="$(dirname "$LOGSTASH_PATH")"; \ + \ + mkdir -p "$dir"; \ + tar -xf logstash.tar.gz --strip-components=1 -C "$dir"; \ + rm logstash.tar.gz; \ + \ + apk del .fetch-deps; \ + \ + export LS_SETTINGS_DIR="$dir/config"; \ +# if the "log4j2.properties" file exists (logstash 5.x), let's empty it out so we get the default: "logging only errors to the console" + if [ -f "$LS_SETTINGS_DIR/log4j2.properties" ]; then \ + cp "$LS_SETTINGS_DIR/log4j2.properties" "$LS_SETTINGS_DIR/log4j2.properties.dist"; \ + truncate -s 0 "$LS_SETTINGS_DIR/log4j2.properties"; \ + fi; \ + \ +# set up some file permissions + for userDir in \ + "$dir/config" \ + "$dir/data" \ + ; do \ + if [ -d "$userDir" ]; then \ + chown -R logstash:logstash "$userDir"; \ + fi; \ + done; \ + \ + logstash --version + +COPY docker-entrypoint.sh / + +ENTRYPOINT ["/docker-entrypoint.sh"] +CMD ["-e", ""] diff --git a/5.0/alpine/docker-entrypoint.sh b/5.0/alpine/docker-entrypoint.sh new file mode 100755 index 000000000..1d67a9f49 --- /dev/null +++ b/5.0/alpine/docker-entrypoint.sh @@ -0,0 +1,15 @@ +#!/bin/bash +set -e + +# first arg is `-f` or `--some-option` +if [ "${1#-}" != "$1" ]; then + set -- logstash "$@" +fi + +# Run as user "logstash" if the command is "logstash" +# allow the container to be started with `--user` +if [ "$1" = 'logstash' -a "$(id -u)" = '0' ]; then + set -- su-exec logstash "$@" +fi + +exec "$@" diff --git a/5.0/docker-entrypoint.sh b/5.0/docker-entrypoint.sh index dea4db59b..4b65b4212 100755 --- a/5.0/docker-entrypoint.sh +++ b/5.0/docker-entrypoint.sh @@ -1,9 +1,8 @@ #!/bin/bash - set -e -# Add logstash as command if needed -if [ "${1:0:1}" = '-' ]; then +# first arg is `-f` or `--some-option` +if [ "${1#-}" != "$1" ]; then set -- logstash "$@" fi diff --git a/Dockerfile-alpine.template b/Dockerfile-alpine.template new file mode 100644 index 000000000..df886373f --- /dev/null +++ b/Dockerfile-alpine.template @@ -0,0 +1,85 @@ +FROM openjdk:8-jre-alpine + +# ensure logstash user exists +RUN addgroup -S logstash && adduser -S -G logstash logstash + +# install plugin dependencies +RUN apk add --no-cache \ +# env: can't execute 'bash': No such file or directory + bash \ + libzmq + +# grab su-exec for easy step-down from root +RUN apk add --no-cache 'su-exec>=0.2' + +# https://www.elastic.co/guide/en/logstash/5.0/installing-logstash.html#_apt +# https://artifacts.elastic.co/GPG-KEY-elasticsearch +ENV GPG_KEY 46095ACC8548582C1A2699A9D27D666CD88E42B4 + +ENV LOGSTASH_PATH %%LOGSTASH_PATH%% +ENV PATH $LOGSTASH_PATH:$PATH + +ENV LOGSTASH_VERSION %%LOGSTASH_VERSION%% +ENV LOGSTASH_TARBALL="%%LOGSTASH_TARBALL%%" \ + LOGSTASH_TARBALL_ASC="%%LOGSTASH_TARBALL_ASC%%" \ + LOGSTASH_TARBALL_SHA1="%%LOGSTASH_TARBALL_SHA1%%" + +RUN set -ex; \ + \ + if [ -z "$LOGSTASH_TARBALL_SHA1" ] && [ -z "$LOGSTASH_TARBALL_ASC" ]; then \ + echo >&2 'error: have neither a SHA1 _or_ a signature file -- cannot verify download!'; \ + exit 1; \ + fi; \ + \ + apk add --no-cache --virtual .fetch-deps \ + ca-certificates \ + gnupg \ + openssl \ + tar \ + ; \ + \ + wget -O logstash.tar.gz "$LOGSTASH_TARBALL"; \ + \ + if [ "$LOGSTASH_TARBALL_SHA1" ]; then \ + echo "$LOGSTASH_TARBALL_SHA1 *logstash.tar.gz" | sha1sum -c -; \ + fi; \ + \ + if [ "$LOGSTASH_TARBALL_ASC" ]; then \ + wget -O logstash.tar.gz.asc "$LOGSTASH_TARBALL_ASC"; \ + export GNUPGHOME="$(mktemp -d)"; \ + gpg --keyserver ha.pool.sks-keyservers.net --recv-keys "$GPG_KEY"; \ + gpg --batch --verify logstash.tar.gz.asc logstash.tar.gz; \ + rm -r "$GNUPGHOME" logstash.tar.gz.asc; \ + fi; \ + \ + dir="$(dirname "$LOGSTASH_PATH")"; \ + \ + mkdir -p "$dir"; \ + tar -xf logstash.tar.gz --strip-components=1 -C "$dir"; \ + rm logstash.tar.gz; \ + \ + apk del .fetch-deps; \ + \ + export LS_SETTINGS_DIR="$dir/config"; \ +# if the "log4j2.properties" file exists (logstash 5.x), let's empty it out so we get the default: "logging only errors to the console" + if [ -f "$LS_SETTINGS_DIR/log4j2.properties" ]; then \ + cp "$LS_SETTINGS_DIR/log4j2.properties" "$LS_SETTINGS_DIR/log4j2.properties.dist"; \ + truncate -s 0 "$LS_SETTINGS_DIR/log4j2.properties"; \ + fi; \ + \ +# set up some file permissions + for userDir in \ + "$dir/config" \ + "$dir/data" \ + ; do \ + if [ -d "$userDir" ]; then \ + chown -R logstash:logstash "$userDir"; \ + fi; \ + done; \ + \ + logstash --version + +COPY docker-entrypoint.sh / + +ENTRYPOINT ["/docker-entrypoint.sh"] +CMD ["-e", ""] diff --git a/Dockerfile.template b/Dockerfile-debian.template similarity index 94% rename from Dockerfile.template rename to Dockerfile-debian.template index e7c997e6f..dbbc6720a 100644 --- a/Dockerfile.template +++ b/Dockerfile-debian.template @@ -29,10 +29,11 @@ RUN apt-key adv --keyserver ha.pool.sks-keyservers.net --recv-keys 46095ACC85485 RUN echo 'deb %%LOGSTASH_DEB_REPO%% stable main' > /etc/apt/sources.list.d/logstash.list ENV LOGSTASH_VERSION %%LOGSTASH_VERSION%% +ENV LOGSTASH_DEB_VERSION %%LOGSTASH_DEB_VERSION%% RUN set -x \ && apt-get update \ - && apt-get install -y --no-install-recommends logstash=$LOGSTASH_VERSION \ + && apt-get install -y --no-install-recommends "logstash=$LOGSTASH_DEB_VERSION" \ && rm -rf /var/lib/apt/lists/* ENV PATH %%LOGSTASH_PATH%%:$PATH diff --git a/docker-entrypoint.sh b/docker-entrypoint.sh index dea4db59b..4b65b4212 100755 --- a/docker-entrypoint.sh +++ b/docker-entrypoint.sh @@ -1,9 +1,8 @@ #!/bin/bash - set -e -# Add logstash as command if needed -if [ "${1:0:1}" = '-' ]; then +# first arg is `-f` or `--some-option` +if [ "${1#-}" != "$1" ]; then set -- logstash "$@" fi diff --git a/generate-stackbrew-library.sh b/generate-stackbrew-library.sh index 273a28dc6..c367bffb1 100755 --- a/generate-stackbrew-library.sh +++ b/generate-stackbrew-library.sh @@ -13,6 +13,9 @@ cd "$(dirname "$(readlink -f "$BASH_SOURCE")")" versions=( */ ) versions=( "${versions[@]%/}" ) +# sort version numbers with highest first +IFS=$'\n'; versions=( $(echo "${versions[*]}" | sort -rV) ); unset IFS + # get the most recent commit which modified any of "$@" fileCommit() { git log -1 --format='format:%H' HEAD -- "$@" @@ -53,7 +56,7 @@ join() { for version in "${versions[@]}"; do commit="$(dirCommit "$version")" - fullVersion="$(git show "$commit":"$version/Dockerfile" | awk '$1 == "ENV" && $2 == "LOGSTASH_VERSION" { gsub(/^.*:/, "", $3); gsub(/~/, "-", $3); print $3; exit }')" + fullVersion="$(git show "$commit":"$version/Dockerfile" | awk '$1 == "ENV" && $2 == "LOGSTASH_VERSION" { print $3; exit }')" versionAliases=() while [ "$fullVersion" != "$version" -a "${fullVersion%[.-]*}" != "$fullVersion" ]; do @@ -71,4 +74,20 @@ for version in "${versions[@]}"; do GitCommit: $commit Directory: $version EOE + + for variant in alpine; do + [ -f "$version/$variant/Dockerfile" ] || continue + + commit="$(dirCommit "$version/$variant")" + + variantAliases=( "${versionAliases[@]/%/-$variant}" ) + variantAliases=( "${variantAliases[@]//latest-/}" ) + + echo + cat <<-EOE + Tags: $(join ', ' "${variantAliases[@]}") + GitCommit: $commit + Directory: $version/$variant + EOE + done done diff --git a/update.sh b/update.sh index 4dd7bee5a..bc756ea73 100755 --- a/update.sh +++ b/update.sh @@ -11,14 +11,14 @@ versions=( "${versions[@]%/}" ) travisEnv= for version in "${versions[@]}"; do - travisEnv='\n - VERSION='"$version$travisEnv" - major="${version%%.*}" debRepo="https://artifacts.elastic.co/packages/${major}.x/apt" logstashPath='/usr/share/logstash/bin' + tarballUrlBase='https://artifacts.elastic.co/downloads' if [ "$major" -lt 5 ]; then debRepo="http://packages.elastic.co/logstash/$version/debian" logstashPath='/opt/logstash/bin' + tarballUrlBase='https://download.elastic.co/logstash' fi fullVersion="$(curl -fsSL "$debRepo/dists/stable/main/binary-amd64/Packages.gz" | gunzip | awk -F ': ' '$1 == "Package" { pkg = $2 } pkg == "logstash" && $1 == "Version" { print $2 }' | sort -rV | head -n1)" @@ -26,15 +26,50 @@ for version in "${versions[@]}"; do echo >&2 "warning: cannot find full version for $version" continue fi + # convert "1:5.0.2-1" over to "5.0.2" + plainVersion="${fullVersion%%-*}" # strip non-upstream-version + plainVersion="${plainVersion##*:}" # strip epoch + tilde='~'; plainVersion="${plainVersion//$tilde/-}" # replace '~' with '-' + ( set -x cp docker-entrypoint.sh "$version/" sed ' + s!%%LOGSTASH_VERSION%%!'"$plainVersion"'!g; s!%%LOGSTASH_DEB_REPO%%!'"$debRepo"'!g; - s!%%LOGSTASH_VERSION%%!'"$fullVersion"'!g; + s!%%LOGSTASH_DEB_VERSION%%!'"$fullVersion"'!g; s!%%LOGSTASH_PATH%%!'"$logstashPath"'!g; - ' Dockerfile.template > "$version/Dockerfile" + ' Dockerfile-debian.template > "$version/Dockerfile" ) + + if [ -d "$version/alpine" ]; then + tarball="$tarballUrlBase/logstash/logstash-${plainVersion}.tar.gz" + tarballAsc="${tarball}.asc" + if ! wget --quiet --spider "$tarballAsc"; then + tarballAsc= + fi + tarballSha1= + for sha1Url in "${tarball}.sha1" "${tarball}.sha1.txt"; do + if sha1="$(wget -qO- "$sha1Url")"; then + tarballSha1="${sha1%% *}" + break + fi + done + ( + set -x + cp docker-entrypoint.sh "$version/alpine/" + sed -i 's/gosu/su-exec/g' "$version/alpine/docker-entrypoint.sh" + sed \ + -e 's!%%LOGSTASH_VERSION%%!'"$plainVersion"'!g' \ + -e 's!%%LOGSTASH_PATH%%!'"$logstashPath"'!g' \ + -e 's!%%LOGSTASH_TARBALL%%!'"$tarball"'!g' \ + -e 's!%%LOGSTASH_TARBALL_ASC%%!'"$tarballAsc"'!g' \ + -e 's!%%LOGSTASH_TARBALL_SHA1%%!'"$tarballSha1"'!g' \ + Dockerfile-alpine.template > "$version/alpine/Dockerfile" + ) + travisEnv='\n - VERSION='"$version VARIANT=alpine$travisEnv" + fi + travisEnv='\n - VERSION='"$version VARIANT=$travisEnv" done travis="$(awk -v 'RS=\n\n' '$1 == "env:" { $0 = "env:'"$travisEnv"'" } { printf "%s%s", $0, RS }' .travis.yml)"