在Docker Alpine中安装ImageMagick

13

我有一个Dockerfile文件,尝试按照以下方式安装ImageMagick:

FROM ruby:2.4-alpine

...

RUN apk --update add imagemagick

...

问题在于容器无法识别文件实用程序(用于内容类型检测)file

本地环境(Mac OSX,使用brew安装了imagemagick):

> file --version
file-5.25
magic file from /usr/share/file/magic

> convert --version
Version: ImageMagick 6.9.9-5 Q16 x86_64 2017-08-03 
http://www.imagemagick.org
Copyright: © 1999-2017 ImageMagick Studio LLC
License: http://www.imagemagick.org/script/license.php
Features: Cipher DPC Modules
Delegates (built-in): bzlib freetype jng jpeg ltdl lzma png tiff xml zlib

使用docker exec -it CONTAINER_ID命令访问的Docker Alpine容器:

> file --version
sh: file: not found

> convert --version
Version: ImageMagick 6.9.5-9 Q16 x86_64 2016-10-21         
http://www.imagemagick.org
Copyright: Copyright (C) 1999-2016 ImageMagick Studio LLC
License: http://www.imagemagick.org/script/license.php
Features: Cipher Modules
Delegates (built-in): fontconfig freetype gslib jng jpeg lcms ltdl png ps tiff webp zlib

我尝试过单独安装imagemagick-dev,以及两者结合在一起,但都没有成功(我想这应该没有影响,因为前者是后者的依赖项)。

问题是:我该如何在Alpine容器中安装它? 我觉得我错过了什么,但找不出来。

顺便说一下,由于我正在使用一个明确使用此函数的框架,所以我不能依赖于除file之外的其他内容类型检测功能。

2个回答

13

file 实用程序不是 ImageMagick 的一部分,而是标准实用程序。您可以在维基百科上阅读更多信息:
File (command)

在 Alpine Linux 上,您可以使用 apk add --no-cache file 命令安装它:

/ # file /etc/group
/bin/sh: file: not found
/ # apk add --no-cache file
fetch http://dl-cdn.alpinelinux.org/alpine/v3.6/main/x86_64/APKINDEX.tar.gz
fetch http://dl-cdn.alpinelinux.org/alpine/v3.6/community/x86_64/APKINDEX.tar.gz
(1/2) Installing libmagic (5.32-r0)
(2/2) Installing file (5.32-r0)
Executing busybox-1.26.2-r5.trigger
OK: 9 MiB in 13 packages
/ # file /etc/group
/etc/group: ASCII text
/ # 

2

使用alpine:3.13

RUN apk --no-cache add php8-pecl-imagick


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接