Docker Alpine 中的 ImageMagick 安装
ImageMagick installation in Docker Alpine
所以我有这个 Docker 文件试图通过以下方式安装 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
之外,我不能依赖其他函数来进行内容类型检测,因为我使用的框架明确地使用了它。
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
/ #
与alpine:3.13
运行 apk --no-cache add php8-pecl-imagick
所以我有这个 Docker 文件试图通过以下方式安装 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
之外,我不能依赖其他函数来进行内容类型检测,因为我使用的框架明确地使用了它。
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
/ #
与alpine:3.13
运行 apk --no-cache add php8-pecl-imagick