docker制作hiredis环境:libhiredis.so.0.13: cannot open shared object file

最近制作docker镜像的时候有c++连接redis的需求,所以必须要制作包含hiredis的环境。

在linux上的操作步骤

1、从git上下载hiredis

https://github.com/redis/hiredis.git

2、安装


cd hiredis
make && make install
echo '/usr/local/lib' >>/etc/ld.so.conf 
ldconfig

运行完上面指令后就完成了hiredis环境的部署。

现在将其制作成docker镜像的环境

环境说明

  • 基础镜像 centos7
  • hiredis

制作Dockerfile
dockerfile起名为hiredisdockerfile,内容如下:


FROM centos:7

MAINTAINER    pkk

RUN echo "create /opt/app"

RUN mkdir /opt/app

RUN echo "add project"

COPY . /opt/app/

WORKDIR /opt/app/hiredis

RUN make && make install

RUN echo '/usr/local/lib' >>/etc/ld.so.conf

RUN ldconfig

CMD ["run your application"]

正常情况下做这么多就够了,但是运行的时候会出现没有make指令的错误,所以还需要安装make;


FROM centos:7

MAINTAINER    pkk

RUN echo "create /opt/app"

RUN mkdir /opt/app

RUN echo "add project"

COPY . /opt/app/

WORKDIR /opt/app/hiredis

RUN yum -y install gcc automake autoconf libtool make

RUN make && make install

RUN echo '/usr/local/lib' >>/etc/ld.so.conf

RUN ldconfig

CMD ["run your application"]

上面的 RUN yum -y install gcc automake autoconf libtool make 提供了make环境。

hiredis文件要和hiredisdockerfile同级目录

到这里hiredis环境的docker环境就制作OK了。

但是这种方式需要安装make环境,还需要整个hiredis,下面给出一种稍微简洁些的方式

其实hiredis环境只需要 hiredis.hlibhiredis.so 这两个编译后的文件,将其配置进docker镜像中即可。这样就不用把整个hiredis文件拷贝进镜像,也不用安装make。

先在宿主主机上的hiredis目录下执行make && make install指令,生成libhiredis.so。

两个文件对应位置:

  • libhiredis.so → /usr/local/lib
  • hiredis.h → /usr/local/include/hiredis

其中/usr/local/include/hiredis这个目录是不存在的,所以需要创建,现在dockerfile中的内容如下:

FROM centos:7

MAINTAINER    pkk

RUN echo "create /opt/app"

RUN mkdir /opt/app

RUN echo "add project"

COPY . /opt/app/

WORKDIR /opt/app

RUN cp libhiredis.so /usr/local/lib

RUN  mkdir /usr/local/include/hiredis

RUN cp hiredis.h /usr/local/include/hiredis

RUN echo '/usr/local/lib' >>/etc/ld.so.conf

RUN ldconfig

CMD ["run your application"]

一个简洁的hiredis环境制作OK。

你可能感兴趣的:(Docker)