Description
接上文
上一篇文章解决了本地环境安装libvips库用以支持GIF图片处理,详见M1 Mac install custom libvips, to use a globally-installed version of libvips,但项目是基于docker部署的,所以需要配置一份包含custom libvips的环境配置部署到正式环境。
一开始我以为很简单,直接使用wget将压缩包下载解压,并且编译安装就行了。但在 configure 阶段会提示缺少很多图片包需要安装,
网上搜到的大部分都是Alpine linux下的apk下载的图片包名称,因为项目部署是基于centos linux,我只能根据其大致转换为yum来下载对应的图片包,详见如下代码
ENV VIPS_VERSION=8.11.3
RUN wget https://github.com/libvips/libvips/releases/download/v${VIPS_VERSION}/vips-${VIPS_VERSION}.tar.gz \ \
&& tar xzf vips-${VIPS_VERSION}.tar.gz \
&& yum install -y \
glib-devel gobject-introspection-devel expat-devel libjpeg-turbo-devel libexif-devel \
giflib-devel libpng-devel libwebp-devel libgsf-devel ImageMagick-devel \
&& cd vips-${VIPS_VERSION} \
&& ./configure --prefix=/usr --with-magick --disable-static --disable-dependency-tracking --enable-silent-rules \
&& make -s install-strip \
&& ldconfig
问题一
libvips在远程机器安装完成之后,执行 pkg-config --modversion vips-cpp
校验是否成功安装,可能会遇到not found的报错,你需要先定义执行 ENV PKG_CONFIG_PATH /usr/lib/pkgconfig
,如果你不确定安装地址在哪里,使用 find /usr -name vips-cpp
查找安装地址然后定义环境变量。
问题二
镜像构建成功之后,打包部署的时候,可能会出现如下报错
Error: libvips-cpp.so.42: cannot open shared object file: No such file or directory
但实际上我们使用find命令,此时在 /usr/local/lib 目录下是能找到对应文件的,根据 sharp 的这篇issue:Installation problems on RedHatEnt6的解决方案
执行RUN echo /usr/local/lib > /etc/ld.so.conf.d/local.conf && /sbin/ldconfig
命令应该就能解决。
又是一些小坑,虽然看上去不难,但着实耗费了我很多时间去解决,也是自身对于docker方面的知识不太熟悉导致的,希望对后人有所帮助。