diff --git a/3.0/32bit/Dockerfile b/3.0/32bit/Dockerfile index 30ce89fc6..f1f4f02e6 100644 --- a/3.0/32bit/Dockerfile +++ b/3.0/32bit/Dockerfile @@ -1,45 +1,65 @@ -FROM debian:jessie +FROM debian:jessie-slim # add our user and group first to make sure their IDs get assigned consistently, regardless of whatever dependencies get added RUN groupadd -r redis && useradd -r -g redis redis -RUN apt-get update && apt-get install -y --no-install-recommends \ - ca-certificates \ - wget \ - && rm -rf /var/lib/apt/lists/* - # grab gosu for easy step-down from root -ENV GOSU_VERSION 1.7 -RUN set -x \ - && wget -O /usr/local/bin/gosu "https://github.com/tianon/gosu/releases/download/$GOSU_VERSION/gosu-$(dpkg --print-architecture)" \ - && wget -O /usr/local/bin/gosu.asc "https://github.com/tianon/gosu/releases/download/$GOSU_VERSION/gosu-$(dpkg --print-architecture).asc" \ - && export GNUPGHOME="$(mktemp -d)" \ - && gpg --keyserver ha.pool.sks-keyservers.net --recv-keys B42F6819007F00F88E364FD4036A9C25BF357DD4 \ - && gpg --batch --verify /usr/local/bin/gosu.asc /usr/local/bin/gosu \ - && rm -r "$GNUPGHOME" /usr/local/bin/gosu.asc \ - && chmod +x /usr/local/bin/gosu \ - && gosu nobody true +# https://github.com/tianon/gosu/releases +ENV GOSU_VERSION 1.10 +RUN set -ex; \ + \ + fetchDeps='ca-certificates wget'; \ + apt-get update; \ + apt-get install -y --no-install-recommends $fetchDeps; \ + rm -rf /var/lib/apt/lists/*; \ + \ + dpkgArch="$(dpkg --print-architecture | awk -F- '{ print $NF }')"; \ + wget -O /usr/local/bin/gosu "https://github.com/tianon/gosu/releases/download/$GOSU_VERSION/gosu-$dpkgArch"; \ + wget -O /usr/local/bin/gosu.asc "https://github.com/tianon/gosu/releases/download/$GOSU_VERSION/gosu-$dpkgArch.asc"; \ + export GNUPGHOME="$(mktemp -d)"; \ + gpg --keyserver ha.pool.sks-keyservers.net --recv-keys B42F6819007F00F88E364FD4036A9C25BF357DD4; \ + gpg --batch --verify /usr/local/bin/gosu.asc /usr/local/bin/gosu; \ + rm -r "$GNUPGHOME" /usr/local/bin/gosu.asc; \ + chmod +x /usr/local/bin/gosu; \ + gosu nobody true; \ + \ + apt-get purge -y --auto-remove $fetchDeps ENV REDIS_VERSION 3.0.7 ENV REDIS_DOWNLOAD_URL http://download.redis.io/releases/redis-3.0.7.tar.gz ENV REDIS_DOWNLOAD_SHA e56b4b7e033ae8dbf311f9191cf6fdf3ae974d1c -RUN apt-get update && apt-get install -y libc6-i386 --no-install-recommends && rm -rf /var/lib/apt/lists/* +RUN apt-get update && apt-get install -y --no-install-recommends \ + libc6-i386 \ + && rm -rf /var/lib/apt/lists/* # for redis-sentinel see: http://redis.io/topics/sentinel -RUN buildDeps='gcc gcc-multilib libc6-dev-i386 make' \ - && set -x \ - && apt-get update && apt-get install -y $buildDeps --no-install-recommends \ - && rm -rf /var/lib/apt/lists/* \ - && wget -O redis.tar.gz "$REDIS_DOWNLOAD_URL" \ - && echo "$REDIS_DOWNLOAD_SHA *redis.tar.gz" | sha1sum -c - \ - && mkdir -p /usr/src/redis \ - && tar -xzf redis.tar.gz -C /usr/src/redis --strip-components=1 \ - && rm redis.tar.gz \ - && make -C /usr/src/redis 32bit \ - && make -C /usr/src/redis install \ - && rm -r /usr/src/redis \ - && apt-get purge -y --auto-remove $buildDeps +RUN set -ex; \ + \ + buildDeps=' \ + wget \ + \ + gcc \ + gcc-multilib \ + libc6-dev-i386 \ + make \ + '; \ + apt-get update; \ + apt-get install -y $buildDeps --no-install-recommends; \ + rm -rf /var/lib/apt/lists/*; \ + \ + wget -O redis.tar.gz "$REDIS_DOWNLOAD_URL"; \ + echo "$REDIS_DOWNLOAD_SHA *redis.tar.gz" | sha1sum -c -; \ + mkdir -p /usr/src/redis; \ + tar -xzf redis.tar.gz -C /usr/src/redis --strip-components=1; \ + rm redis.tar.gz; \ + \ + make -C /usr/src/redis -j "$(nproc)" 32bit; \ + make -C /usr/src/redis install; \ + \ + rm -r /usr/src/redis; \ + \ + apt-get purge -y --auto-remove $buildDeps RUN mkdir /data && chown redis:redis /data VOLUME /data @@ -50,4 +70,4 @@ RUN ln -s usr/local/bin/docker-entrypoint.sh /entrypoint.sh # backwards compat ENTRYPOINT ["docker-entrypoint.sh"] EXPOSE 6379 -CMD [ "redis-server" ] +CMD ["redis-server"] diff --git a/3.0/Dockerfile b/3.0/Dockerfile index c76d1583f..68630c742 100644 --- a/3.0/Dockerfile +++ b/3.0/Dockerfile @@ -1,43 +1,60 @@ -FROM debian:jessie +FROM debian:jessie-slim # add our user and group first to make sure their IDs get assigned consistently, regardless of whatever dependencies get added RUN groupadd -r redis && useradd -r -g redis redis -RUN apt-get update && apt-get install -y --no-install-recommends \ - ca-certificates \ - wget \ - && rm -rf /var/lib/apt/lists/* - # grab gosu for easy step-down from root -ENV GOSU_VERSION 1.7 -RUN set -x \ - && wget -O /usr/local/bin/gosu "https://github.com/tianon/gosu/releases/download/$GOSU_VERSION/gosu-$(dpkg --print-architecture)" \ - && wget -O /usr/local/bin/gosu.asc "https://github.com/tianon/gosu/releases/download/$GOSU_VERSION/gosu-$(dpkg --print-architecture).asc" \ - && export GNUPGHOME="$(mktemp -d)" \ - && gpg --keyserver ha.pool.sks-keyservers.net --recv-keys B42F6819007F00F88E364FD4036A9C25BF357DD4 \ - && gpg --batch --verify /usr/local/bin/gosu.asc /usr/local/bin/gosu \ - && rm -r "$GNUPGHOME" /usr/local/bin/gosu.asc \ - && chmod +x /usr/local/bin/gosu \ - && gosu nobody true +# https://github.com/tianon/gosu/releases +ENV GOSU_VERSION 1.10 +RUN set -ex; \ + \ + fetchDeps='ca-certificates wget'; \ + apt-get update; \ + apt-get install -y --no-install-recommends $fetchDeps; \ + rm -rf /var/lib/apt/lists/*; \ + \ + dpkgArch="$(dpkg --print-architecture | awk -F- '{ print $NF }')"; \ + wget -O /usr/local/bin/gosu "https://github.com/tianon/gosu/releases/download/$GOSU_VERSION/gosu-$dpkgArch"; \ + wget -O /usr/local/bin/gosu.asc "https://github.com/tianon/gosu/releases/download/$GOSU_VERSION/gosu-$dpkgArch.asc"; \ + export GNUPGHOME="$(mktemp -d)"; \ + gpg --keyserver ha.pool.sks-keyservers.net --recv-keys B42F6819007F00F88E364FD4036A9C25BF357DD4; \ + gpg --batch --verify /usr/local/bin/gosu.asc /usr/local/bin/gosu; \ + rm -r "$GNUPGHOME" /usr/local/bin/gosu.asc; \ + chmod +x /usr/local/bin/gosu; \ + gosu nobody true; \ + \ + apt-get purge -y --auto-remove $fetchDeps ENV REDIS_VERSION 3.0.7 ENV REDIS_DOWNLOAD_URL http://download.redis.io/releases/redis-3.0.7.tar.gz ENV REDIS_DOWNLOAD_SHA e56b4b7e033ae8dbf311f9191cf6fdf3ae974d1c # for redis-sentinel see: http://redis.io/topics/sentinel -RUN buildDeps='gcc libc6-dev make' \ - && set -x \ - && apt-get update && apt-get install -y $buildDeps --no-install-recommends \ - && rm -rf /var/lib/apt/lists/* \ - && wget -O redis.tar.gz "$REDIS_DOWNLOAD_URL" \ - && echo "$REDIS_DOWNLOAD_SHA *redis.tar.gz" | sha1sum -c - \ - && mkdir -p /usr/src/redis \ - && tar -xzf redis.tar.gz -C /usr/src/redis --strip-components=1 \ - && rm redis.tar.gz \ - && make -C /usr/src/redis \ - && make -C /usr/src/redis install \ - && rm -r /usr/src/redis \ - && apt-get purge -y --auto-remove $buildDeps +RUN set -ex; \ + \ + buildDeps=' \ + wget \ + \ + gcc \ + libc6-dev \ + make \ + '; \ + apt-get update; \ + apt-get install -y $buildDeps --no-install-recommends; \ + rm -rf /var/lib/apt/lists/*; \ + \ + wget -O redis.tar.gz "$REDIS_DOWNLOAD_URL"; \ + echo "$REDIS_DOWNLOAD_SHA *redis.tar.gz" | sha1sum -c -; \ + mkdir -p /usr/src/redis; \ + tar -xzf redis.tar.gz -C /usr/src/redis --strip-components=1; \ + rm redis.tar.gz; \ + \ + make -C /usr/src/redis -j "$(nproc)"; \ + make -C /usr/src/redis install; \ + \ + rm -r /usr/src/redis; \ + \ + apt-get purge -y --auto-remove $buildDeps RUN mkdir /data && chown redis:redis /data VOLUME /data @@ -48,4 +65,4 @@ RUN ln -s usr/local/bin/docker-entrypoint.sh /entrypoint.sh # backwards compat ENTRYPOINT ["docker-entrypoint.sh"] EXPOSE 6379 -CMD [ "redis-server" ] +CMD ["redis-server"] diff --git a/3.0/alpine/Dockerfile b/3.0/alpine/Dockerfile index 4ac68b9f3..0f49c5b05 100644 --- a/3.0/alpine/Dockerfile +++ b/3.0/alpine/Dockerfile @@ -1,4 +1,4 @@ -FROM alpine:3.5 +FROM alpine:3.6 # add our user and group first to make sure their IDs get assigned consistently, regardless of whatever dependencies get added RUN addgroup -S redis && adduser -S -G redis redis @@ -11,22 +11,28 @@ ENV REDIS_DOWNLOAD_URL http://download.redis.io/releases/redis-3.0.7.tar.gz ENV REDIS_DOWNLOAD_SHA e56b4b7e033ae8dbf311f9191cf6fdf3ae974d1c # for redis-sentinel see: http://redis.io/topics/sentinel -RUN set -x \ - && apk add --no-cache --virtual .build-deps \ +RUN set -ex; \ + \ + apk add --no-cache --virtual .build-deps \ + coreutils \ gcc \ linux-headers \ make \ musl-dev \ - tar \ - && wget -O redis.tar.gz "$REDIS_DOWNLOAD_URL" \ - && echo "$REDIS_DOWNLOAD_SHA *redis.tar.gz" | sha1sum -c - \ - && mkdir -p /usr/src/redis \ - && tar -xzf redis.tar.gz -C /usr/src/redis --strip-components=1 \ - && rm redis.tar.gz \ - && make -C /usr/src/redis \ - && make -C /usr/src/redis install \ - && rm -r /usr/src/redis \ - && apk del .build-deps + ; \ + \ + wget -O redis.tar.gz "$REDIS_DOWNLOAD_URL"; \ + echo "$REDIS_DOWNLOAD_SHA *redis.tar.gz" | sha1sum -c -; \ + mkdir -p /usr/src/redis; \ + tar -xzf redis.tar.gz -C /usr/src/redis --strip-components=1; \ + rm redis.tar.gz; \ + \ + make -C /usr/src/redis -j "$(nproc)"; \ + make -C /usr/src/redis install; \ + \ + rm -r /usr/src/redis; \ + \ + apk del .build-deps RUN mkdir /data && chown redis:redis /data VOLUME /data @@ -37,4 +43,4 @@ RUN ln -s usr/local/bin/docker-entrypoint.sh /entrypoint.sh # backwards compat ENTRYPOINT ["docker-entrypoint.sh"] EXPOSE 6379 -CMD [ "redis-server" ] +CMD ["redis-server"] diff --git a/3.2/32bit/Dockerfile b/3.2/32bit/Dockerfile index c1744c9ba..1c53f046e 100644 --- a/3.2/32bit/Dockerfile +++ b/3.2/32bit/Dockerfile @@ -1,67 +1,76 @@ -FROM debian:jessie +FROM debian:jessie-slim # add our user and group first to make sure their IDs get assigned consistently, regardless of whatever dependencies get added RUN groupadd -r redis && useradd -r -g redis redis -RUN apt-get update && apt-get install -y --no-install-recommends \ - ca-certificates \ - wget \ - && rm -rf /var/lib/apt/lists/* - # grab gosu for easy step-down from root -ENV GOSU_VERSION 1.7 -RUN set -x \ - && wget -O /usr/local/bin/gosu "https://github.com/tianon/gosu/releases/download/$GOSU_VERSION/gosu-$(dpkg --print-architecture)" \ - && wget -O /usr/local/bin/gosu.asc "https://github.com/tianon/gosu/releases/download/$GOSU_VERSION/gosu-$(dpkg --print-architecture).asc" \ - && export GNUPGHOME="$(mktemp -d)" \ - && gpg --keyserver ha.pool.sks-keyservers.net --recv-keys B42F6819007F00F88E364FD4036A9C25BF357DD4 \ - && gpg --batch --verify /usr/local/bin/gosu.asc /usr/local/bin/gosu \ - && rm -r "$GNUPGHOME" /usr/local/bin/gosu.asc \ - && chmod +x /usr/local/bin/gosu \ - && gosu nobody true +# https://github.com/tianon/gosu/releases +ENV GOSU_VERSION 1.10 +RUN set -ex; \ + \ + fetchDeps='ca-certificates wget'; \ + apt-get update; \ + apt-get install -y --no-install-recommends $fetchDeps; \ + rm -rf /var/lib/apt/lists/*; \ + \ + dpkgArch="$(dpkg --print-architecture | awk -F- '{ print $NF }')"; \ + wget -O /usr/local/bin/gosu "https://github.com/tianon/gosu/releases/download/$GOSU_VERSION/gosu-$dpkgArch"; \ + wget -O /usr/local/bin/gosu.asc "https://github.com/tianon/gosu/releases/download/$GOSU_VERSION/gosu-$dpkgArch.asc"; \ + export GNUPGHOME="$(mktemp -d)"; \ + gpg --keyserver ha.pool.sks-keyservers.net --recv-keys B42F6819007F00F88E364FD4036A9C25BF357DD4; \ + gpg --batch --verify /usr/local/bin/gosu.asc /usr/local/bin/gosu; \ + rm -r "$GNUPGHOME" /usr/local/bin/gosu.asc; \ + chmod +x /usr/local/bin/gosu; \ + gosu nobody true; \ + \ + apt-get purge -y --auto-remove $fetchDeps ENV REDIS_VERSION 3.2.9 ENV REDIS_DOWNLOAD_URL http://download.redis.io/releases/redis-3.2.9.tar.gz ENV REDIS_DOWNLOAD_SHA 6eaacfa983b287e440d0839ead20c2231749d5d6b78bbe0e0ffa3a890c59ff26 -RUN apt-get update && apt-get install -y libc6-i386 --no-install-recommends && rm -rf /var/lib/apt/lists/* +RUN apt-get update && apt-get install -y --no-install-recommends \ + libc6-i386 \ + && rm -rf /var/lib/apt/lists/* # for redis-sentinel see: http://redis.io/topics/sentinel -RUN set -ex \ +RUN set -ex; \ \ - && buildDeps=' \ + buildDeps=' \ + wget \ + \ gcc \ gcc-multilib \ libc6-dev-i386 \ make \ - ' \ - && apt-get update \ - && apt-get install -y $buildDeps --no-install-recommends \ - && rm -rf /var/lib/apt/lists/* \ + '; \ + apt-get update; \ + apt-get install -y $buildDeps --no-install-recommends; \ + rm -rf /var/lib/apt/lists/*; \ \ - && wget -O redis.tar.gz "$REDIS_DOWNLOAD_URL" \ - && echo "$REDIS_DOWNLOAD_SHA *redis.tar.gz" | sha256sum -c - \ - && mkdir -p /usr/src/redis \ - && tar -xzf redis.tar.gz -C /usr/src/redis --strip-components=1 \ - && rm redis.tar.gz \ + wget -O redis.tar.gz "$REDIS_DOWNLOAD_URL"; \ + echo "$REDIS_DOWNLOAD_SHA *redis.tar.gz" | sha256sum -c -; \ + mkdir -p /usr/src/redis; \ + tar -xzf redis.tar.gz -C /usr/src/redis --strip-components=1; \ + rm redis.tar.gz; \ \ # Disable Redis protected mode [1] as it is unnecessary in context # of Docker. Ports are not automatically exposed when running inside # Docker, but rather explicitely by specifying -p / -P. # [1] https://github.com/antirez/redis/commit/edd4d555df57dc84265fdfb4ef59a4678832f6da - && grep -q '^#define CONFIG_DEFAULT_PROTECTED_MODE 1$' /usr/src/redis/src/server.h \ - && sed -ri 's!^(#define CONFIG_DEFAULT_PROTECTED_MODE) 1$!\1 0!' /usr/src/redis/src/server.h \ - && grep -q '^#define CONFIG_DEFAULT_PROTECTED_MODE 0$' /usr/src/redis/src/server.h \ + grep -q '^#define CONFIG_DEFAULT_PROTECTED_MODE 1$' /usr/src/redis/src/server.h; \ + sed -ri 's!^(#define CONFIG_DEFAULT_PROTECTED_MODE) 1$!\1 0!' /usr/src/redis/src/server.h; \ + grep -q '^#define CONFIG_DEFAULT_PROTECTED_MODE 0$' /usr/src/redis/src/server.h; \ # for future reference, we modify this directly in the source instead of just supplying a default configuration flag because apparently "if you specify any argument to redis-server, [it assumes] you are going to specify everything" # see also https://github.com/docker-library/redis/issues/4#issuecomment-50780840 # (more exactly, this makes sure the default behavior of "save on SIGTERM" stays functional by default) \ - && make -C /usr/src/redis 32bit \ - && make -C /usr/src/redis install \ + make -C /usr/src/redis -j "$(nproc)" 32bit; \ + make -C /usr/src/redis install; \ \ - && rm -r /usr/src/redis \ + rm -r /usr/src/redis; \ \ - && apt-get purge -y --auto-remove $buildDeps + apt-get purge -y --auto-remove $buildDeps RUN mkdir /data && chown redis:redis /data VOLUME /data @@ -71,4 +80,4 @@ COPY docker-entrypoint.sh /usr/local/bin/ ENTRYPOINT ["docker-entrypoint.sh"] EXPOSE 6379 -CMD [ "redis-server" ] +CMD ["redis-server"] diff --git a/3.2/Dockerfile b/3.2/Dockerfile index d4be34b72..1c031d5be 100644 --- a/3.2/Dockerfile +++ b/3.2/Dockerfile @@ -1,64 +1,71 @@ -FROM debian:jessie +FROM debian:jessie-slim # add our user and group first to make sure their IDs get assigned consistently, regardless of whatever dependencies get added RUN groupadd -r redis && useradd -r -g redis redis -RUN apt-get update && apt-get install -y --no-install-recommends \ - ca-certificates \ - wget \ - && rm -rf /var/lib/apt/lists/* - # grab gosu for easy step-down from root -ENV GOSU_VERSION 1.7 -RUN set -x \ - && wget -O /usr/local/bin/gosu "https://github.com/tianon/gosu/releases/download/$GOSU_VERSION/gosu-$(dpkg --print-architecture)" \ - && wget -O /usr/local/bin/gosu.asc "https://github.com/tianon/gosu/releases/download/$GOSU_VERSION/gosu-$(dpkg --print-architecture).asc" \ - && export GNUPGHOME="$(mktemp -d)" \ - && gpg --keyserver ha.pool.sks-keyservers.net --recv-keys B42F6819007F00F88E364FD4036A9C25BF357DD4 \ - && gpg --batch --verify /usr/local/bin/gosu.asc /usr/local/bin/gosu \ - && rm -r "$GNUPGHOME" /usr/local/bin/gosu.asc \ - && chmod +x /usr/local/bin/gosu \ - && gosu nobody true +# https://github.com/tianon/gosu/releases +ENV GOSU_VERSION 1.10 +RUN set -ex; \ + \ + fetchDeps='ca-certificates wget'; \ + apt-get update; \ + apt-get install -y --no-install-recommends $fetchDeps; \ + rm -rf /var/lib/apt/lists/*; \ + \ + dpkgArch="$(dpkg --print-architecture | awk -F- '{ print $NF }')"; \ + wget -O /usr/local/bin/gosu "https://github.com/tianon/gosu/releases/download/$GOSU_VERSION/gosu-$dpkgArch"; \ + wget -O /usr/local/bin/gosu.asc "https://github.com/tianon/gosu/releases/download/$GOSU_VERSION/gosu-$dpkgArch.asc"; \ + export GNUPGHOME="$(mktemp -d)"; \ + gpg --keyserver ha.pool.sks-keyservers.net --recv-keys B42F6819007F00F88E364FD4036A9C25BF357DD4; \ + gpg --batch --verify /usr/local/bin/gosu.asc /usr/local/bin/gosu; \ + rm -r "$GNUPGHOME" /usr/local/bin/gosu.asc; \ + chmod +x /usr/local/bin/gosu; \ + gosu nobody true; \ + \ + apt-get purge -y --auto-remove $fetchDeps ENV REDIS_VERSION 3.2.9 ENV REDIS_DOWNLOAD_URL http://download.redis.io/releases/redis-3.2.9.tar.gz ENV REDIS_DOWNLOAD_SHA 6eaacfa983b287e440d0839ead20c2231749d5d6b78bbe0e0ffa3a890c59ff26 # for redis-sentinel see: http://redis.io/topics/sentinel -RUN set -ex \ +RUN set -ex; \ \ - && buildDeps=' \ + buildDeps=' \ + wget \ + \ gcc \ libc6-dev \ make \ - ' \ - && apt-get update \ - && apt-get install -y $buildDeps --no-install-recommends \ - && rm -rf /var/lib/apt/lists/* \ + '; \ + apt-get update; \ + apt-get install -y $buildDeps --no-install-recommends; \ + rm -rf /var/lib/apt/lists/*; \ \ - && wget -O redis.tar.gz "$REDIS_DOWNLOAD_URL" \ - && echo "$REDIS_DOWNLOAD_SHA *redis.tar.gz" | sha256sum -c - \ - && mkdir -p /usr/src/redis \ - && tar -xzf redis.tar.gz -C /usr/src/redis --strip-components=1 \ - && rm redis.tar.gz \ + wget -O redis.tar.gz "$REDIS_DOWNLOAD_URL"; \ + echo "$REDIS_DOWNLOAD_SHA *redis.tar.gz" | sha256sum -c -; \ + mkdir -p /usr/src/redis; \ + tar -xzf redis.tar.gz -C /usr/src/redis --strip-components=1; \ + rm redis.tar.gz; \ \ # Disable Redis protected mode [1] as it is unnecessary in context # of Docker. Ports are not automatically exposed when running inside # Docker, but rather explicitely by specifying -p / -P. # [1] https://github.com/antirez/redis/commit/edd4d555df57dc84265fdfb4ef59a4678832f6da - && grep -q '^#define CONFIG_DEFAULT_PROTECTED_MODE 1$' /usr/src/redis/src/server.h \ - && sed -ri 's!^(#define CONFIG_DEFAULT_PROTECTED_MODE) 1$!\1 0!' /usr/src/redis/src/server.h \ - && grep -q '^#define CONFIG_DEFAULT_PROTECTED_MODE 0$' /usr/src/redis/src/server.h \ + grep -q '^#define CONFIG_DEFAULT_PROTECTED_MODE 1$' /usr/src/redis/src/server.h; \ + sed -ri 's!^(#define CONFIG_DEFAULT_PROTECTED_MODE) 1$!\1 0!' /usr/src/redis/src/server.h; \ + grep -q '^#define CONFIG_DEFAULT_PROTECTED_MODE 0$' /usr/src/redis/src/server.h; \ # for future reference, we modify this directly in the source instead of just supplying a default configuration flag because apparently "if you specify any argument to redis-server, [it assumes] you are going to specify everything" # see also https://github.com/docker-library/redis/issues/4#issuecomment-50780840 # (more exactly, this makes sure the default behavior of "save on SIGTERM" stays functional by default) \ - && make -C /usr/src/redis \ - && make -C /usr/src/redis install \ + make -C /usr/src/redis -j "$(nproc)"; \ + make -C /usr/src/redis install; \ \ - && rm -r /usr/src/redis \ + rm -r /usr/src/redis; \ \ - && apt-get purge -y --auto-remove $buildDeps + apt-get purge -y --auto-remove $buildDeps RUN mkdir /data && chown redis:redis /data VOLUME /data @@ -68,4 +75,4 @@ COPY docker-entrypoint.sh /usr/local/bin/ ENTRYPOINT ["docker-entrypoint.sh"] EXPOSE 6379 -CMD [ "redis-server" ] +CMD ["redis-server"] diff --git a/3.2/alpine/Dockerfile b/3.2/alpine/Dockerfile index 2418819fc..33e7b5822 100644 --- a/3.2/alpine/Dockerfile +++ b/3.2/alpine/Dockerfile @@ -1,4 +1,4 @@ -FROM alpine:3.5 +FROM alpine:3.6 # add our user and group first to make sure their IDs get assigned consistently, regardless of whatever dependencies get added RUN addgroup -S redis && adduser -S -G redis redis @@ -11,38 +11,39 @@ ENV REDIS_DOWNLOAD_URL http://download.redis.io/releases/redis-3.2.9.tar.gz ENV REDIS_DOWNLOAD_SHA 6eaacfa983b287e440d0839ead20c2231749d5d6b78bbe0e0ffa3a890c59ff26 # for redis-sentinel see: http://redis.io/topics/sentinel -RUN set -ex \ +RUN set -ex; \ \ - && apk add --no-cache --virtual .build-deps \ + apk add --no-cache --virtual .build-deps \ + coreutils \ gcc \ linux-headers \ make \ musl-dev \ - tar \ + ; \ \ - && wget -O redis.tar.gz "$REDIS_DOWNLOAD_URL" \ - && echo "$REDIS_DOWNLOAD_SHA *redis.tar.gz" | sha256sum -c - \ - && mkdir -p /usr/src/redis \ - && tar -xzf redis.tar.gz -C /usr/src/redis --strip-components=1 \ - && rm redis.tar.gz \ + wget -O redis.tar.gz "$REDIS_DOWNLOAD_URL"; \ + echo "$REDIS_DOWNLOAD_SHA *redis.tar.gz" | sha256sum -c -; \ + mkdir -p /usr/src/redis; \ + tar -xzf redis.tar.gz -C /usr/src/redis --strip-components=1; \ + rm redis.tar.gz; \ \ # Disable Redis protected mode [1] as it is unnecessary in context # of Docker. Ports are not automatically exposed when running inside # Docker, but rather explicitely by specifying -p / -P. # [1] https://github.com/antirez/redis/commit/edd4d555df57dc84265fdfb4ef59a4678832f6da - && grep -q '^#define CONFIG_DEFAULT_PROTECTED_MODE 1$' /usr/src/redis/src/server.h \ - && sed -ri 's!^(#define CONFIG_DEFAULT_PROTECTED_MODE) 1$!\1 0!' /usr/src/redis/src/server.h \ - && grep -q '^#define CONFIG_DEFAULT_PROTECTED_MODE 0$' /usr/src/redis/src/server.h \ + grep -q '^#define CONFIG_DEFAULT_PROTECTED_MODE 1$' /usr/src/redis/src/server.h; \ + sed -ri 's!^(#define CONFIG_DEFAULT_PROTECTED_MODE) 1$!\1 0!' /usr/src/redis/src/server.h; \ + grep -q '^#define CONFIG_DEFAULT_PROTECTED_MODE 0$' /usr/src/redis/src/server.h; \ # for future reference, we modify this directly in the source instead of just supplying a default configuration flag because apparently "if you specify any argument to redis-server, [it assumes] you are going to specify everything" # see also https://github.com/docker-library/redis/issues/4#issuecomment-50780840 # (more exactly, this makes sure the default behavior of "save on SIGTERM" stays functional by default) \ - && make -C /usr/src/redis \ - && make -C /usr/src/redis install \ + make -C /usr/src/redis -j "$(nproc)"; \ + make -C /usr/src/redis install; \ \ - && rm -r /usr/src/redis \ + rm -r /usr/src/redis; \ \ - && apk del .build-deps + apk del .build-deps RUN mkdir /data && chown redis:redis /data VOLUME /data @@ -52,4 +53,4 @@ COPY docker-entrypoint.sh /usr/local/bin/ ENTRYPOINT ["docker-entrypoint.sh"] EXPOSE 6379 -CMD [ "redis-server" ] +CMD ["redis-server"]