19

我正在尝试在我的 Ubuntu 14.04 服务器上使用 ImageMagick 来调整图像大小,然后再上传到 s3。我正在由 Wercker 创建的 docker 容器中运行所有内容。问题是我已经将它安装在服务器上,并将其安装在 docker 容器的 Wercker 构建中,但我的 EasyImage(处理调整大小的 nodejs 库)说

 ImageMagick Not Found
 EasyImage requires ImageMagick to work. Install it from http://www.imagemagick.org/script/binary-release.php.

这是我在 Wercker 文件中安装 imagemagick 的命令

sudo apt-get update -y && sudo apt-get install -y imagemagick php5-imagick

我也用过

sudo apt-get update -y && sudo apt-get install -y imagemagick

,但似乎都不起作用。我是否缺少让 ImageMagick 在 docker 容器内工作的东西?

4

3 回答 3

9

您需要使用 pecl 和扩展安装 imagick 以在 php 中启用 imagick。以下命令对我有用:

RUN apt-get update && apt-get install -y \
    imagemagick libmagickwand-dev --no-install-recommends \
    && pecl install imagick \
    && docker-php-ext-enable imagick
于 2018-03-22T11:16:54.387 回答
9

我在 docker 容器中也遇到了 imagemagick 的问题。我分享了我的 docker 配置的一部分。当我测试 docker 容器出了什么问题时,我从 imagemagick 看到关于丢失字体的错误。如果您使用轻量级版本的 smth 镜像,如 linux-alpine 或 smth else,则您的镜像不能有任何重要的工具,如本地机器或 VM。当然,您需要将其安装在 docker 容器中,而不是安装在服务器上的 vm 中

在 docker 中安装 imagemagic 非常简单: apk --update add imagemagick

我的 docker 文件的一部分。我安装了一些重要的字体,imagemagic 使用它很棒。然而它可以解决另一个问题,因为我在 docker 中尝试使用 imagemagick 时遇到了这个错误

流产生空缓冲区

# the first thing we specify in a Dockerfile is the base image
FROM keymetrics/pm2:latest-alpine

RUN yarn global add pm2@latest

# Install image preview generator tools
RUN apk add --no-cache file
RUN apk --update add imagemagick

# Install fonts
RUN apk --no-cache add msttcorefonts-installer fontconfig && \
 update-ms-fonts && \
 fc-cache -f
于 2018-10-11T14:18:57.300 回答
1

对我来说,这段代码有效:

RUN set -ex \
    && apk add --no-cache --virtual .phpize-deps $PHPIZE_DEPS imagemagick-dev libtool \
    && export CFLAGS="$PHP_CFLAGS" CPPFLAGS="$PHP_CPPFLAGS" LDFLAGS="$PHP_LDFLAGS" \
    && pecl install imagick-3.4.3 \
    && docker-php-ext-enable imagick \
    && apk add --no-cache --virtual .imagick-runtime-deps imagemagick \
    && apk del .phpize-deps

它安装 imagick 槽pecl install然后启用 php 分机。

我在这里找到了解决方案。

于 2021-06-16T06:01:29.450 回答