Docker Alpine中的ImageMagick安装

Fdo*_*Fdo 4 imagemagick paperclip paperclip-validation docker alpine-linux

所以我有这个Dockerfile尝试以下列方式安装ImageMagick:

FROM ruby:2.4-alpine

...

RUN apk --update add imagemagick

...
Run Code Online (Sandbox Code Playgroud)

关键是容器无法识别file实用程序(用于内容类型检测).

本地环境(Mac OSX上,安装imagemagickbrew):

> 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
Run Code Online (Sandbox Code Playgroud)

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
Run Code Online (Sandbox Code Playgroud)

也尝试imagemagick-dev自己安装,并且两者结合没有任何运气(不应该有所作为,因为第一个是后者的依赖,我猜).

问题是,我如何在Alpine容器中安装它?我想我错过了什么,但无法弄清楚.

顺便说一下,我不能依赖于file内容类型检测以外的其他功能,因为我使用的是明确使用它的框架.

And*_*inn 7

file实用程序不是ImageMagick的一部分.这是一个标准的实用程序.你可以在维基百科上阅读有关它的内容:
文件(命令)

在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
/ # 
Run Code Online (Sandbox Code Playgroud)