Docker Alpine

时间:2017-09-26 00:01:07

标签: docker imagemagick paperclip alpine paperclip-validation

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

FROM ruby:2.4-alpine

...

RUN apk --update add imagemagick

...

重点是容器无法识别file实用程序(用于内容类型检测)。

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

> 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容器(使用docker exec -it CONTAINER_ID访问shell):

> 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 个答案:

答案 0 :(得分:6)

operator()实用程序不是ImageMagick的一部分。这是一个标准的实用程序。你可以在维基百科上阅读有关它的内容:
File (command)

在Alpine Linux上,您可以使用file

进行安装
apk add --no-cache file