docker安装redis

Posted by Clear Blog on February 8, 2018
  1. dockerhub上获取官方redis镜像 官方针对不同的redis版本做了不同版本的镜像,以下我针对5.0-rc的Dockerfile来搭建redis服务 ```` FROM debian:stretch-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

grab gosu for easy step-down from root

https://github.com/tianon/gosu/releases

ENV GOSU_VERSION 1.10 RUN set -ex;

fetchDeps=”
ca-certificates
dirmngr
gnupg
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;
gpgconf –kill all;
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 5.0-rc4 ENV REDIS_DOWNLOAD_URL http://download.redis.io/releases/redis-5.0-rc4.tar.gz ENV REDIS_DOWNLOAD_SHA bfc7a27d3ba990e154e5b56484061f01962d40b7c77b520ed7a940914b267cec

for redis-sentinel see: http://redis.io/topics/sentinel

RUN set -ex;

buildDeps=’
ca-certificates
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” | 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 explicitly by specifying -p / -P)

[1]: https://github.com/antirez/redis/commit/edd4d555df57dc84265fdfb4ef59a4678832f6da

1
2
3
4
5
6
7
8
9
10
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 -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 WORKDIR /data

COPY docker-entrypoint.sh /usr/local/bin/ ENTRYPOINT [“docker-entrypoint.sh”]

EXPOSE 6379 CMD [“redis-server”]

1
2
2. docker run

docker run -d –name redis -p 6379:6379 -v /Users/xuguangwu/server/redis/data:/data redis:5.0-rc –requirepass xuguangwu

docker run -d –name redis -p 53791:6379 -v /mnt/data/redis:/data redis:5.0-rc –requirepass Xl-be&xgw!s docker run -d –name redis -p 53792:6379 -v /mnt/test/data/redis:/data redis:5.0-rc –requirepass xuguangwu ````

  1. 批量删除key 生产环境删除:redis-cli -a Xl23L9bgPw keys “SUPPLIER_RANK_” | xargs -i redis-cli -a Xl23L9bgPw del {} 测试环境删除:redis-cli -a xuguangwu keys “FACTORING_USER” | xargs -i redis-cli -a xuguangwu del {}

q: