From 44a837d4724679d3ba675d1527ac43f42fd90fcb Mon Sep 17 00:00:00 2001 From: wjunLu Date: Mon, 1 Apr 2024 17:25:48 +0800 Subject: [PATCH 1/2] Update redis docker version. --- redis/7.2.4/22.03-lts-sp3/Dockerfile | 57 +++++++++++++++++++++++++ redis/7.2.4/22.03-lts-sp3/entrypoint.sh | 21 +++++++++ redis/README.md | 9 ++-- redis/doc/image-info.yml | 30 ++++++------- redis/meta.yml | 4 ++ 5 files changed, 99 insertions(+), 22 deletions(-) create mode 100644 redis/7.2.4/22.03-lts-sp3/Dockerfile create mode 100644 redis/7.2.4/22.03-lts-sp3/entrypoint.sh create mode 100644 redis/meta.yml diff --git a/redis/7.2.4/22.03-lts-sp3/Dockerfile b/redis/7.2.4/22.03-lts-sp3/Dockerfile new file mode 100644 index 0000000..6abe26a --- /dev/null +++ b/redis/7.2.4/22.03-lts-sp3/Dockerfile @@ -0,0 +1,57 @@ +ARG BASE=openeuler/openeuler:22.03-lts-sp3 +FROM ${BASE} + +ARG TARGETARCH +ARG VERSION=7.2.4 + +RUN yum -y update; \ + yum -y install findutils wget gcc make glibc-devel openssl-devel ca-certificates; \ + groupadd -r -g 909 redis; \ + useradd -r -g redis -u 909 redis + +ENV GOSU_VERSION 1.17 +RUN wget -O /usr/local/bin/gosu.asc "https://github.com/tianon/gosu/releases/download/${GOSU_VERSION}/gosu-${TARGETARCH}.asc" && \ + wget -O /usr/local/bin/gosu "https://github.com/tianon/gosu/releases/download/${GOSU_VERSION}/gosu-${TARGETARCH}" && \ + chmod 755 /usr/local/bin/gosu; \ + wget -O redis.tar.gz https://github.com/redis/redis/archive/refs/tags/${VERSION}.tar.gz; \ + mkdir -p /redis; tar -vxzf redis.tar.gz -C /redis --strip-components=1; \ + rm -rf redis.tar.gz; \ + grep -E '^ *createBoolConfig[(]"protected-mode",.*, *1 *,.*[)],$' /redis/src/config.c; \ + sed -ri 's!^( *createBoolConfig[(]"protected-mode",.*, *)1( *,.*[)],)$!\10\2!' /redis/src/config.c; \ + grep -E '^ *createBoolConfig[(]"protected-mode",.*, *0 *,.*[)],$' /redis/src/config.c; \ + extraJemallocConfigureFlags="--build=$TARGETARCH"; \ + case "${TARGETARCH}" in \ + amd64) extraJemallocConfigureFlags="$extraJemallocConfigureFlags --with-lg-page=12" ;; \ + *) extraJemallocConfigureFlags="$extraJemallocConfigureFlags --with-lg-page=16" ;; \ + esac; \ + extraJemallocConfigureFlags="$extraJemallocConfigureFlags --with-lg-hugepage=21"; \ + grep -F 'cd jemalloc && ./configure ' /redis/deps/Makefile; \ + sed -ri 's!cd jemalloc && ./configure !&'"$extraJemallocConfigureFlags"' !' /redis/deps/Makefile; \ + grep -F "cd jemalloc && ./configure $extraJemallocConfigureFlags " /redis/deps/Makefile; \ + export BUILD_TLS=yes; \ + make -C /redis -j "$(nproc)" all MALLOC=libc; \ + make -C /redis install + +COPY entrypoint.sh / +RUN serverMd5="$(md5sum /usr/local/bin/redis-server | cut -d' ' -f1)"; export serverMd5; \ + find /usr/local/bin/redis* -maxdepth 0 \ + -type f -not -name redis-server \ + -exec sh -eux -c ' \ + md5="$(md5sum "$1" | cut -d" " -f1)"; \ + test "$md5" = "$serverMd5"; \ + ' -- '{}' ';' \ + -exec ln -svfT 'redis-server' '{}' ';' \ + ; \ + rm -rf /redis; \ + chmod 755 /entrypoint.sh; \ + mkdir /data; chown redis:redis /data; \ + yum -y remove wget gcc make; \ + yum clean all + +VOLUME /data +WORKDIR /data + +ENTRYPOINT ["/entrypoint.sh"] + +EXPOSE 6379 +CMD ["redis-server"] \ No newline at end of file diff --git a/redis/7.2.4/22.03-lts-sp3/entrypoint.sh b/redis/7.2.4/22.03-lts-sp3/entrypoint.sh new file mode 100644 index 0000000..16ecb3e --- /dev/null +++ b/redis/7.2.4/22.03-lts-sp3/entrypoint.sh @@ -0,0 +1,21 @@ +#!/bin/sh +set -e + +# first arg is `-f` or `--some-option` +# or first arg is `something.conf` +if [ "${1#-}" != "$1" ] || [ "${1%.conf}" != "$1" ]; then + set -- redis-server "$@" +fi + +# allow the container to be started with `--user` +if [ "$1" = 'redis-server' -a "$(id -u)" = '0' ]; then + find . \! -user redis -exec chown redis '{}' + + exec gosu redis "$0" "$@" +fi + +um="$(umask)" +if [ "$um" = '0022' ]; then + umask 0077 +fi + +exec "$@" \ No newline at end of file diff --git a/redis/README.md b/redis/README.md index ad72235..1aa5abc 100644 --- a/redis/README.md +++ b/redis/README.md @@ -21,19 +21,19 @@ We are using `buildx` in here to generate multi-arch images, see more in [Docker # How to use this image ## start a redis instance ```shell -docker run --name my-redis -d openeuler/redis:6.2.7 +docker run --name my-redis -d openeuler/redis:{TAG} ``` ## Start with persistent storage ```shell -docker run --name my-redis -d openeuler/redis:6.2.7 redis-server --save 60 1 --loglevel warning +docker run --name my-redis -d openeuler/redis:{TAG} redis-server --save 60 1 --loglevel warning ``` As shows above, this will save a snapshot of the DB every 60 seconds if at least 1 write operation was performed. ## connect to a redis instance Connect to a local redis instance using loopback address ```shell -docker run --name my-redis -d -p 6379:6379 openeuler/redis:6.2.7 +docker run --name my-redis -d -p 6379:6379 openeuler/redis:{TAG} redis-cli -h 127.0.0.1 -p 6379 ``` @@ -45,7 +45,8 @@ config set protected-mode no # Supported tags and respective Dockerfile links -- 6.2.7-22.03-lts: redis v6.2.7, openEuler 22.03 LTS +- 6.2.7-22.03-lts: redis v{TAG}, openEuler 22.03 LTS +- 7.2.4-oe2203sp3: redis v7.2.4, openEuler 22.03 LTS SP3 ## Operating System Linux/Unix, ARM64 or x86-64 architecture. diff --git a/redis/doc/image-info.yml b/redis/doc/image-info.yml index a296b27..da03c2e 100644 --- a/redis/doc/image-info.yml +++ b/redis/doc/image-info.yml @@ -1,7 +1,7 @@ name: redis category: database description: Redis(Remote Dictionary Server)是一个使用 ANSI C 编写的开源、支持网络、基于内存、分布式、可选持久性的键值对存储数据库。 -environment: " +environment: | 本应用以容器镜像的方式供用户使用,运行于预置docker的Linux环境。Docker的推荐安装方式如下: ## apt安装 ### 1.更新系统软件包依赖 @@ -17,7 +17,7 @@ environment: " ``` ### 3.添加Docker官方APT源 ``` - echo \"deb [arch=$(dpkg --print-architecture) signed-by=/usr/apt/keyrings/docker.gpg] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable\" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null + echo "deb [arch=$(dpkg --print-architecture) signed-by=/usr/apt/keyrings/docker.gpg] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null ``` ### 4.再次更新软件包索引 ``` @@ -64,20 +64,20 @@ environment: " ``` sudo docker run hello-world ``` - " -download: " + +download: | 获取容器镜像 ``` - docker pull openeuler/redis:latest + docker pull openeuler/redis:{TAG} ``` - " -install: " + +install: | 启动容器 ``` - docker run --name redis -d openeuler/redis:latest + docker run --name my-redis -d -p 6379:6379 openeuler/redis:{TAG} ``` 用户可根据自身需求,自定义启动选项。 - " + license: BSD-3-Clause license similar_packages: - Memcached: 一个高性能的内存对象缓存系统,与 Redis 类似,但只能缓存简单的键值对。 @@ -88,12 +88,6 @@ similar_packages: - Tarantool: 一个内存中的 NoSQL 数据库系统,可以提供高性能和高可用性,同时还提供了 Lua 脚本支持。 dependency: - acl - - cryptsetup - - device-mapper - - lmod-libs - - libargon2 - - libfdisk - - libutemper - - systemd - - util-linux - - xkeyboard-config \ No newline at end of file + - glibc-devel + - openssl-devel + - gosu \ No newline at end of file diff --git a/redis/meta.yml b/redis/meta.yml new file mode 100644 index 0000000..a36d538 --- /dev/null +++ b/redis/meta.yml @@ -0,0 +1,4 @@ +6.2.7-22.03-lts: + redis/6.2.7/22.03-lts/Dockerfile +7.2.4-oe2203sp3: + redis/7.2.4/22.03-lts-sp3/Dcokerfile \ No newline at end of file -- Gitee From 180b72e3f1458a0a0523bdd3df4c35f3ff878a47 Mon Sep 17 00:00:00 2001 From: wjunLu Date: Mon, 1 Apr 2024 20:05:40 +0800 Subject: [PATCH 2/2] Modify redis Dockerfile. --- redis/7.2.4/22.03-lts-sp3/Dockerfile | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/redis/7.2.4/22.03-lts-sp3/Dockerfile b/redis/7.2.4/22.03-lts-sp3/Dockerfile index 6abe26a..d7cbe71 100644 --- a/redis/7.2.4/22.03-lts-sp3/Dockerfile +++ b/redis/7.2.4/22.03-lts-sp3/Dockerfile @@ -10,9 +10,8 @@ RUN yum -y update; \ useradd -r -g redis -u 909 redis ENV GOSU_VERSION 1.17 -RUN wget -O /usr/local/bin/gosu.asc "https://github.com/tianon/gosu/releases/download/${GOSU_VERSION}/gosu-${TARGETARCH}.asc" && \ - wget -O /usr/local/bin/gosu "https://github.com/tianon/gosu/releases/download/${GOSU_VERSION}/gosu-${TARGETARCH}" && \ - chmod 755 /usr/local/bin/gosu; \ +RUN wget -O /usr/local/bin/gosu "https://github.com/tianon/gosu/releases/download/${GOSU_VERSION}/gosu-${TARGETARCH}"; \ + chmod +x /usr/local/bin/gosu; \ wget -O redis.tar.gz https://github.com/redis/redis/archive/refs/tags/${VERSION}.tar.gz; \ mkdir -p /redis; tar -vxzf redis.tar.gz -C /redis --strip-components=1; \ rm -rf redis.tar.gz; \ -- Gitee