所以我有这个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
以外的其他函数进行内容类型检测,因为我使用的是明确使用它的框架。
答案 0 :(得分:6)
operator()
实用程序不是ImageMagick的一部分。这是一个标准的实用程序。你可以在维基百科上阅读有关它的内容:
File (command)
在Alpine Linux上,您可以使用file
:
apk add --no-cache file