Checksum the download of the binaries (#12)
* Checksum the download of the binaries of the Accumulo, Zookeeper and Hadoop.
diff --git a/Dockerfile b/Dockerfile
index 3408ce5..b17e39b 100644
--- a/Dockerfile
+++ b/Dockerfile
@@ -19,11 +19,21 @@
ARG ZOOKEEPER_VERSION
ARG ACCUMULO_VERSION
-ENV HADOOP_VERSION ${HADOOP_VERSION:-2.7.3}
-ENV ZOOKEEPER_VERSION ${ZOOKEEPER_VERSION:-3.4.9}
+ARG HADOOP_HASH
+ARG ZOOKEEPER_HASH
+ARG ACCUMULO_HASH
+
+ENV HADOOP_VERSION ${HADOOP_VERSION:-2.7.5}
+ENV ZOOKEEPER_VERSION ${ZOOKEEPER_VERSION:-3.4.11}
ENV ACCUMULO_VERSION ${ACCUMULO_VERSION:-1.8.1}
ENV FLUO_VERSION 1.2.0-SNAPSHOT
+ENV HADOOP_HASH ${HADOOP_HASH:-0f90ef671530c2aa42cde6da111e8e47e9cd659e}
+ENV ZOOKEEPER_HASH ${ZOOKEEPER_HASH:-9268b4aed71dccad3d7da5bfa5573b66d2c9b565}
+ENV ACCUMULO_HASH ${ACCUMULO_HASH:-8e6b4f5d9bd0c41ca9a206e876553d8b39923528}
+# Change and uncomment next line when 1.2.0 is released
+# ENV FLUO_HASH ${FLUO_HASH:-xxx}
+
# Download from Apache mirrors instead of archive #9
ENV APACHE_DIST_URLS \
https://www.apache.org/dyn/closer.cgi?action=download&filename= \
@@ -35,21 +45,24 @@
RUN set -eux; \
download_bin() { \
local f="$1"; shift; \
+ local hash="$1"; shift; \
local distFile="$1"; shift; \
local success=; \
local distUrl=; \
for distUrl in $APACHE_DIST_URLS; do \
if wget -nv -O "$f" "$distUrl$distFile"; then \
success=1; \
+ # Checksum the download
+ echo "$hash" "*$f" | sha1sum -c -; \
break; \
fi; \
done; \
[ -n "$success" ]; \
};\
\
- download_bin "accumulo.tar.gz" "accumulo/$ACCUMULO_VERSION/accumulo-$ACCUMULO_VERSION-bin.tar.gz"; \
- download_bin "hadoop.tar.gz" "hadoop/core/hadoop-$HADOOP_VERSION/hadoop-$HADOOP_VERSION.tar.gz"; \
- download_bin "zookeeper.tar.gz" "zookeeper/zookeeper-$ZOOKEEPER_VERSION/zookeeper-$ZOOKEEPER_VERSION.tar.gz"
+ download_bin "accumulo.tar.gz" "$ACCUMULO_HASH" "accumulo/$ACCUMULO_VERSION/accumulo-$ACCUMULO_VERSION-bin.tar.gz"; \
+ download_bin "hadoop.tar.gz" "$HADOOP_HASH" "hadoop/core/hadoop-$HADOOP_VERSION/hadoop-$HADOOP_VERSION.tar.gz"; \
+ download_bin "zookeeper.tar.gz" "$ZOOKEEPER_HASH" "zookeeper/zookeeper-$ZOOKEEPER_VERSION/zookeeper-$ZOOKEEPER_VERSION.tar.gz"
RUN tar xzf accumulo.tar.gz -C /tmp/
RUN tar xzf hadoop.tar.gz -C /tmp/
diff --git a/README.md b/README.md
index 960c1f2..3b74116 100644
--- a/README.md
+++ b/README.md
@@ -21,8 +21,8 @@
|-------------|---------|
| [Fluo] | 1.2.0 |
| [Accumulo] | 1.8.1 |
-| [Hadoop] | 2.7.3 |
-| [Zookeeper] | 3.4.9 |
+| [Hadoop] | 2.7.5 |
+| [Zookeeper] | 3.4.11 |
If these versions do not match what is running on your cluster, you should consider building
your own image with matching versions. However, Fluo must be 1.2+.
@@ -51,7 +51,16 @@
Or build the Fluo docker image with specific versions of Hadoop, Zookeeper, etc using the command below:
- docker build --build-arg ZOOKEEPER_VERSION=3.4.8 --build-arg ACCUMULO_VERSION=1.7.3 --build-arg HADOOP_VERSION=2.7.0 -t fluo .
+ docker build \
+ --build-arg ZOOKEEPER_VERSION=3.4.11 \
+ --build-arg ZOOKEEPER_HASH=9268b4aed71dccad3d7da5bfa5573b66d2c9b565 \
+ --build-arg ACCUMULO_VERSION=1.8.1 \
+ --build-arg ACCUMULO_HASH=8e6b4f5d9bd0c41ca9a206e876553d8b39923528 \
+ --build-arg HADOOP_VERSION=2.7.5 \
+ --build-arg HADOOP_HASH=0f90ef671530c2aa42cde6da111e8e47e9cd659e \
+ -t fluo .
+
+ Don't forget to update the HASH of the chosen version. We use SHA1 to validate the hash.
## Next steps