Skip to content

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

Open
@jappp

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方面的知识不太熟悉导致的,希望对后人有所帮助。

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