Skip to content

sharp.js支持GIF图片处理的Dockerfile配置踩坑之旅 #17

Description

@jappp

接上文

上一篇文章解决了本地环境安装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
image
但实际上我们使用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方面的知识不太熟悉导致的,希望对后人有所帮助。

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions