Docker Alpine 中的 ImageMagick 安装

Docker Alpine 中的 ImageMagick 安装

因此我有这个 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 Alpine 容器(使用 访问 shell docker exec -it CONTAINER_ID):

> 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内容类型检测之外的其他功能,因为我正在使用明确使用此功能的框架。

答案1

以下是在 stackoverflow 上对我有帮助的类似问答:
docker alpine 中的 imagemagick 安装

文件实用程序不是 ImageMagick 的一部分,它是一个标准实用程序。您可以在 wikipedia 上阅读更多相关信息:
文件(命令)

在 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
/ #

相关内容