├── .github ├── FUNDING.yml └── issue_template.md ├── 1.2.4 ├── docker-entrypoint.sh └── Dockerfile ├── 2.4.0 ├── docker-entrypoint.sh └── Dockerfile ├── 2.5.0 ├── docker-entrypoint.sh └── Dockerfile ├── LICENSE └── README.md /.github/FUNDING.yml: -------------------------------------------------------------------------------- 1 | liberapay: 31z4 2 | ko_fi: elisey 3 | -------------------------------------------------------------------------------- /.github/issue_template.md: -------------------------------------------------------------------------------- 1 | ***Before you file an issue here, please keep in mind that your issue may be not related to the image itself. Please make sure that it is, otherwise report the issue [upstream](https://issues.apache.org/jira/projects/STORM/issues).*** 2 | 3 | ### Expected behavior 4 | 5 | Tell us what should happen. 6 | 7 | ### Actual behavior 8 | 9 | Tell us what happens instead. 10 | 11 | ### Steps to reproduce the behavior 12 | 13 | Tell us how to reproduce the issue. 14 | 15 | ### System configuration 16 | 17 | Please include as much relevant information as possible. -------------------------------------------------------------------------------- /1.2.4/docker-entrypoint.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | set -e 4 | 5 | # Allow the container to be started with `--user` 6 | if [ "$1" = 'storm' -a "$(id -u)" = '0' ]; then 7 | chown -R storm:storm "$STORM_CONF_DIR" "$STORM_DATA_DIR" "$STORM_LOG_DIR" 8 | exec gosu storm "$0" "$@" 9 | fi 10 | 11 | # Generate the config only if it doesn't exist 12 | CONFIG="$STORM_CONF_DIR/storm.yaml" 13 | if [ ! -f "$CONFIG" ]; then 14 | cat << EOF > "$CONFIG" 15 | storm.zookeeper.servers: [zookeeper] 16 | nimbus.seeds: [nimbus] 17 | storm.log.dir: "$STORM_LOG_DIR" 18 | storm.local.dir: "$STORM_DATA_DIR" 19 | EOF 20 | fi 21 | 22 | exec "$@" 23 | -------------------------------------------------------------------------------- /2.4.0/docker-entrypoint.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | set -e 4 | 5 | # Allow the container to be started with `--user` 6 | if [ "$1" = 'storm' -a "$(id -u)" = '0' ]; then 7 | chown -R storm:storm "$STORM_CONF_DIR" "$STORM_DATA_DIR" "$STORM_LOG_DIR" 8 | exec gosu storm "$0" "$@" 9 | fi 10 | 11 | # Generate the config only if it doesn't exist 12 | CONFIG="$STORM_CONF_DIR/storm.yaml" 13 | if [ ! -f "$CONFIG" ]; then 14 | cat << EOF > "$CONFIG" 15 | storm.zookeeper.servers: [zookeeper] 16 | nimbus.seeds: [nimbus] 17 | storm.log.dir: "$STORM_LOG_DIR" 18 | storm.local.dir: "$STORM_DATA_DIR" 19 | EOF 20 | fi 21 | 22 | exec "$@" 23 | -------------------------------------------------------------------------------- /2.5.0/docker-entrypoint.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | set -e 4 | 5 | # Allow the container to be started with `--user` 6 | if [ "$1" = 'storm' -a "$(id -u)" = '0' ]; then 7 | chown -R storm:storm "$STORM_CONF_DIR" "$STORM_DATA_DIR" "$STORM_LOG_DIR" 8 | exec gosu storm "$0" "$@" 9 | fi 10 | 11 | # Generate the config only if it doesn't exist 12 | CONFIG="$STORM_CONF_DIR/storm.yaml" 13 | if [ ! -f "$CONFIG" ]; then 14 | cat << EOF > "$CONFIG" 15 | storm.zookeeper.servers: [zookeeper] 16 | nimbus.seeds: [nimbus] 17 | storm.log.dir: "$STORM_LOG_DIR" 18 | storm.local.dir: "$STORM_DATA_DIR" 19 | EOF 20 | fi 21 | 22 | exec "$@" 23 | -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | MIT License 2 | 3 | Copyright (c) 2016 Elisey Zanko 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining a copy 6 | of this software and associated documentation files (the "Software"), to deal 7 | in the Software without restriction, including without limitation the rights 8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | copies of the Software, and to permit persons to whom the Software is 10 | furnished to do so, subject to the following conditions: 11 | 12 | The above copyright notice and this permission notice shall be included in all 13 | copies or substantial portions of the Software. 14 | 15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 21 | SOFTWARE. 22 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | **The Apache Storm project took over maintenance on the image. See [https://github.com/apache/storm-docker](https://github.com/apache/storm-docker).** 2 | 3 | # Docker image packaging for Apache Storm 4 | 5 | This is the Git repo of the [Docker "Official Image"](https://github.com/docker-library/official-images#what-are-official-images) for [`storm`](https://hub.docker.com/_/storm/). See [the Docker Hub page](https://hub.docker.com/_/storm/) for the full readme on how to use this Docker image and for information regarding contributing and issues. 6 | 7 | The [full image description on Docker Hub](https://hub.docker.com/_/storm/) is generated/maintained over in [the docker-library/docs repository](https://github.com/docker-library/docs), specifically in [the `storm` directory](https://github.com/docker-library/docs/tree/master/storm). 8 | 9 | ## See a change merged here that doesn't show up on Docker Hub yet? 10 | 11 | For more information about the full official images change lifecycle, see [the "An image's source changed in Git, now what?" FAQ entry](https://github.com/docker-library/faq#an-images-source-changed-in-git-now-what). 12 | 13 | For outstanding `storm` image PRs, check [PRs with the "library/storm" label on the official-images repository](https://github.com/docker-library/official-images/labels/library%2Fstorm). For the current "source of truth" for [`storm`](https://hub.docker.com/_/storm/), see [the `library/storm` file in the official-images repository](https://github.com/docker-library/official-images/blob/master/library/storm). 14 | -------------------------------------------------------------------------------- /2.5.0/Dockerfile: -------------------------------------------------------------------------------- 1 | FROM eclipse-temurin:11-jre 2 | 3 | ENV STORM_CONF_DIR=/conf \ 4 | STORM_DATA_DIR=/data \ 5 | STORM_LOG_DIR=/logs 6 | 7 | # Add a user with an explicit UID/GID and create necessary directories 8 | RUN set -eux; \ 9 | groupadd -r storm --gid=1000; \ 10 | useradd -r -g storm --uid=1000 storm; \ 11 | mkdir -p "$STORM_CONF_DIR" "$STORM_DATA_DIR" "$STORM_LOG_DIR"; \ 12 | chown -R storm:storm "$STORM_CONF_DIR" "$STORM_DATA_DIR" "$STORM_LOG_DIR"`` 13 | 14 | # Install required packages 15 | RUN set -eux; \ 16 | apt-get update; \ 17 | DEBIAN_FRONTEND=noninteractive \ 18 | apt-get install -y --no-install-recommends \ 19 | bash \ 20 | ca-certificates \ 21 | dirmngr \ 22 | gosu \ 23 | gnupg \ 24 | python3 \ 25 | procps \ 26 | wget; \ 27 | rm -rf /var/lib/apt/lists/*; \ 28 | # Verify that gosu binary works 29 | gosu nobody true 30 | 31 | ARG GPG_KEY=51379DA8A7AE5B02674EF15C134716AF768D9B6E 32 | ARG DISTRO_NAME=apache-storm-2.5.0 33 | 34 | # Download Apache Storm, verify its PGP signature, untar and clean up 35 | RUN set -eux; \ 36 | ddist() { \ 37 | local f="$1"; shift; \ 38 | local distFile="$1"; shift; \ 39 | local success=; \ 40 | local distUrl=; \ 41 | for distUrl in \ 42 | 'https://www.apache.org/dyn/closer.cgi?action=download&filename=' \ 43 | https://www-us.apache.org/dist/ \ 44 | https://www.apache.org/dist/ \ 45 | https://archive.apache.org/dist/ \ 46 | ; do \ 47 | if wget -q -O "$f" "$distUrl$distFile" && [ -s "$f" ]; then \ 48 | success=1; \ 49 | break; \ 50 | fi; \ 51 | done; \ 52 | [ -n "$success" ]; \ 53 | }; \ 54 | ddist "$DISTRO_NAME.tar.gz" "storm/$DISTRO_NAME/$DISTRO_NAME.tar.gz"; \ 55 | ddist "$DISTRO_NAME.tar.gz.asc" "storm/$DISTRO_NAME/$DISTRO_NAME.tar.gz.asc"; \ 56 | export GNUPGHOME="$(mktemp -d)"; \ 57 | gpg --keyserver hkps://keyserver.pgp.com --recv-key "$GPG_KEY" || \ 58 | gpg --keyserver hkps://keyserver.ubuntu.com --recv-keys "$GPG_KEY" || \ 59 | gpg --keyserver hkps://pgp.mit.edu --recv-keys "$GPG_KEY"; \ 60 | gpg --batch --verify "$DISTRO_NAME.tar.gz.asc" "$DISTRO_NAME.tar.gz"; \ 61 | tar -xzf "$DISTRO_NAME.tar.gz"; \ 62 | rm -rf "$GNUPGHOME" "$DISTRO_NAME.tar.gz" "$DISTRO_NAME.tar.gz.asc"; \ 63 | chown -R storm:storm "$DISTRO_NAME" 64 | 65 | WORKDIR $DISTRO_NAME 66 | 67 | ENV PATH $PATH:/$DISTRO_NAME/bin 68 | 69 | COPY docker-entrypoint.sh / 70 | ENTRYPOINT ["/docker-entrypoint.sh"] 71 | -------------------------------------------------------------------------------- /1.2.4/Dockerfile: -------------------------------------------------------------------------------- 1 | FROM eclipse-temurin:8-jre 2 | 3 | ENV STORM_CONF_DIR=/conf \ 4 | STORM_DATA_DIR=/data \ 5 | STORM_LOG_DIR=/logs 6 | 7 | # Add a user with an explicit UID/GID and create necessary directories 8 | RUN set -eux; \ 9 | groupadd -r storm --gid=1000; \ 10 | useradd -r -g storm --uid=1000 storm; \ 11 | mkdir -p "$STORM_CONF_DIR" "$STORM_DATA_DIR" "$STORM_LOG_DIR"; \ 12 | chown -R storm:storm "$STORM_CONF_DIR" "$STORM_DATA_DIR" "$STORM_LOG_DIR"`` 13 | 14 | # Install required packages 15 | RUN set -eux; \ 16 | apt-get update; \ 17 | DEBIAN_FRONTEND=noninteractive \ 18 | apt-get install -y --no-install-recommends \ 19 | bash \ 20 | ca-certificates \ 21 | dirmngr \ 22 | gosu \ 23 | gnupg \ 24 | python2 \ 25 | procps \ 26 | wget; \ 27 | rm -rf /var/lib/apt/lists/*; \ 28 | # Verify that gosu binary works 29 | gosu nobody true; \ 30 | # Set default version to Python 2 31 | update-alternatives --install /usr/bin/python python /usr/bin/python2 0 32 | 33 | ARG GPG_KEY=5167DE337E7370373499FC1DA4A672F11B5050C8 34 | ARG DISTRO_NAME=apache-storm-1.2.4 35 | 36 | # Download Apache Storm, verify its PGP signature, untar and clean up 37 | RUN set -eux; \ 38 | ddist() { \ 39 | local f="$1"; shift; \ 40 | local distFile="$1"; shift; \ 41 | local success=; \ 42 | local distUrl=; \ 43 | for distUrl in \ 44 | 'https://www.apache.org/dyn/closer.cgi?action=download&filename=' \ 45 | https://www-us.apache.org/dist/ \ 46 | https://www.apache.org/dist/ \ 47 | https://archive.apache.org/dist/ \ 48 | ; do \ 49 | if wget -q -O "$f" "$distUrl$distFile" && [ -s "$f" ]; then \ 50 | success=1; \ 51 | break; \ 52 | fi; \ 53 | done; \ 54 | [ -n "$success" ]; \ 55 | }; \ 56 | ddist "$DISTRO_NAME.tar.gz" "storm/$DISTRO_NAME/$DISTRO_NAME.tar.gz"; \ 57 | ddist "$DISTRO_NAME.tar.gz.asc" "storm/$DISTRO_NAME/$DISTRO_NAME.tar.gz.asc"; \ 58 | export GNUPGHOME="$(mktemp -d)"; \ 59 | gpg --keyserver hkps://keyserver.pgp.com --recv-key "$GPG_KEY" || \ 60 | gpg --keyserver hkps://keyserver.ubuntu.com --recv-keys "$GPG_KEY" || \ 61 | gpg --keyserver hkps://pgp.mit.edu --recv-keys "$GPG_KEY"; \ 62 | gpg --batch --verify "$DISTRO_NAME.tar.gz.asc" "$DISTRO_NAME.tar.gz"; \ 63 | tar -xzf "$DISTRO_NAME.tar.gz"; \ 64 | rm -rf "$GNUPGHOME" "$DISTRO_NAME.tar.gz" "$DISTRO_NAME.tar.gz.asc"; \ 65 | chown -R storm:storm "$DISTRO_NAME" 66 | 67 | WORKDIR $DISTRO_NAME 68 | 69 | ENV PATH $PATH:/$DISTRO_NAME/bin 70 | 71 | COPY docker-entrypoint.sh / 72 | ENTRYPOINT ["/docker-entrypoint.sh"] 73 | -------------------------------------------------------------------------------- /2.4.0/Dockerfile: -------------------------------------------------------------------------------- 1 | FROM eclipse-temurin:11-jre 2 | 3 | ENV STORM_CONF_DIR=/conf \ 4 | STORM_DATA_DIR=/data \ 5 | STORM_LOG_DIR=/logs 6 | 7 | # Add a user with an explicit UID/GID and create necessary directories 8 | RUN set -eux; \ 9 | groupadd -r storm --gid=1000; \ 10 | useradd -r -g storm --uid=1000 storm; \ 11 | mkdir -p "$STORM_CONF_DIR" "$STORM_DATA_DIR" "$STORM_LOG_DIR"; \ 12 | chown -R storm:storm "$STORM_CONF_DIR" "$STORM_DATA_DIR" "$STORM_LOG_DIR"`` 13 | 14 | # Install required packages 15 | RUN set -eux; \ 16 | apt-get update; \ 17 | DEBIAN_FRONTEND=noninteractive \ 18 | apt-get install -y --no-install-recommends \ 19 | bash \ 20 | ca-certificates \ 21 | dirmngr \ 22 | gosu \ 23 | gnupg \ 24 | python2 \ 25 | procps \ 26 | wget; \ 27 | rm -rf /var/lib/apt/lists/*; \ 28 | # Verify that gosu binary works 29 | gosu nobody true; \ 30 | # Set default version to Python 2 31 | update-alternatives --install /usr/bin/python python /usr/bin/python2 0 32 | 33 | ARG GPG_KEY=51379DA8A7AE5B02674EF15C134716AF768D9B6E 34 | ARG DISTRO_NAME=apache-storm-2.4.0 35 | 36 | # Download Apache Storm, verify its PGP signature, untar and clean up 37 | RUN set -eux; \ 38 | ddist() { \ 39 | local f="$1"; shift; \ 40 | local distFile="$1"; shift; \ 41 | local success=; \ 42 | local distUrl=; \ 43 | for distUrl in \ 44 | 'https://www.apache.org/dyn/closer.cgi?action=download&filename=' \ 45 | https://www-us.apache.org/dist/ \ 46 | https://www.apache.org/dist/ \ 47 | https://archive.apache.org/dist/ \ 48 | ; do \ 49 | if wget -q -O "$f" "$distUrl$distFile" && [ -s "$f" ]; then \ 50 | success=1; \ 51 | break; \ 52 | fi; \ 53 | done; \ 54 | [ -n "$success" ]; \ 55 | }; \ 56 | ddist "$DISTRO_NAME.tar.gz" "storm/$DISTRO_NAME/$DISTRO_NAME.tar.gz"; \ 57 | ddist "$DISTRO_NAME.tar.gz.asc" "storm/$DISTRO_NAME/$DISTRO_NAME.tar.gz.asc"; \ 58 | export GNUPGHOME="$(mktemp -d)"; \ 59 | gpg --keyserver hkps://keyserver.pgp.com --recv-key "$GPG_KEY" || \ 60 | gpg --keyserver hkps://keyserver.ubuntu.com --recv-keys "$GPG_KEY" || \ 61 | gpg --keyserver hkps://pgp.mit.edu --recv-keys "$GPG_KEY"; \ 62 | gpg --batch --verify "$DISTRO_NAME.tar.gz.asc" "$DISTRO_NAME.tar.gz"; \ 63 | tar -xzf "$DISTRO_NAME.tar.gz"; \ 64 | rm -rf "$GNUPGHOME" "$DISTRO_NAME.tar.gz" "$DISTRO_NAME.tar.gz.asc"; \ 65 | chown -R storm:storm "$DISTRO_NAME" 66 | 67 | WORKDIR $DISTRO_NAME 68 | 69 | # This is a workaround to make storm workers run in jdk-11 and above. 70 | # Thanks to Raul Negrean (raulnegrean) for the suggestion. 71 | # It should be removed once the fix is included into the storm distribution. 72 | # See more details at https://github.com/apache/storm/pull/3503 and https://github.com/31z4/storm-docker/issues/39 73 | RUN set -eux; \ 74 | apt-get update; \ 75 | apt-get install -y --no-install-recommends \ 76 | zip \ 77 | unzip; \ 78 | for jar in \ 79 | lib/storm-client-2.4.0.jar \ 80 | lib-worker/storm-client-2.4.0.jar \ 81 | ; do \ 82 | unzip "$jar" defaults.yaml; \ 83 | sed -i 's/worker.childopts: "/&-XX:+IgnoreUnrecognizedVMOptions /' defaults.yaml; \ 84 | zip -u "$jar" defaults.yaml; \ 85 | rm defaults.yaml; \ 86 | done; \ 87 | apt-get purge -y --auto-remove \ 88 | zip \ 89 | unzip; \ 90 | rm -rf /var/lib/apt/lists/* 91 | 92 | ENV PATH $PATH:/$DISTRO_NAME/bin 93 | 94 | COPY docker-entrypoint.sh / 95 | ENTRYPOINT ["/docker-entrypoint.sh"] 96 | --------------------------------------------------------------------------------