写在前面

最近,有小伙伴问我:他们公司想将现有产品微服务化,部署到Docker容器中,为了部署方便,希望将现有的基础服务,例如,Redis这些基础服务,打包到Docker容器中,而不直接使用Docker镜像库有已有的Redis,这就节省了他们公司再次配置基础服务的时间。问我能不能将现有的Redis打包到Docker容器中。经过我一系列的操作,满足了他们的需求。接下来,我就将如何通过Dockerfile构建Redis镜像分享给大家!

编写redis_install.sh脚本

编写redis编译安装shell脚本redis_install.sh (最后两行的意思是,第69行匹配127.0.0.1更换成0.0.0.0;第88行匹配protected-mode yes更换为protected-mode no),这里,我以redis 4.0.9为例。

#!/bin/bash
yum install -y gcc gcc-c++ make openssl openssl-devel
cd /home/redis-4.0.9
make && make PREFIX=/usr/local/redis install
mkdir -p /usr/local/redis/conf/
cp /home/redis-4.0.9/redis.conf  /usr/local/redis/conf/
sed -i  '69s/127.0.0.1/0.0.0.0/' /usr/local/redis/conf/redis.conf
sed -i  '88s/protected-mode yes/protected-mode no/' /usr/local/redis/conf/redis.conf

编写Dockerfile

FROM centos:7
ADD redis-4.0.9.tar.gz /home
COPY redis_install.sh /home
RUN sh /home/redis_install.sh
ENTRYPOINT /usr/local/redis/bin/redis-server /usr/local/redis/conf/redis.conf

测试Redis

  • 启动容器 docker run -itd -p 6380:6379 mycentos:redis #6380为宿主机端口,6379为容器端口
  • 进入容器 docker exec -it 镜像id /bin/bash
  • 宿主机连接redis /usr/local/redis/bin/redis-cli -p 6380
  • 验证:可以在宿主机set name xxx,然后在容器内get name 测试

好了,今天就到这儿吧,我是冰河,我们下期见!!

Logo

权威|前沿|技术|干货|国内首个API全生命周期开发者社区

更多推荐