我需要添加imagemagick到我的php 7.4 docker,所以在文件Dockerfile。我添加了:
FROM php:7.4.1-apache
RUN apt-get update &&
apt-get install -y
python
libfreetype6-dev
libwebp-dev
libjpeg62-turbo-dev
libpng-dev
libzip-dev
nano
mc
git-core
libmagickwand-dev --no-install-recommends &&
pecl install imagick && imagick &&
docker-php-ext-enable imagick &&
curl ...
RUN docker-php-ext-install
gd pdo pdo_mysql zip gmp bcmath pcntl ldap sysvmsg exif &&
a2enmod rewrite
RUN install-php-extensions imagick
COPY virtualhost.conf /etc/apache2/sites-enabled/000-default.conf
But I got error:
Build process completed successfully
Installing '/usr/local/lib/php/extensions/no-debug-non-zts-20190902/imagick.so'
Installing '/usr/local/include/php/ext/imagick/php_imagick_shared.h'
install ok: channel://pecl.php.net/imagick-3.5.1
configuration option "php_ini" is not set to php.ini location
You should add "extension=imagick.so" to php.ini
/bin/sh: 1: imagick: not found
ERROR: Service 'web' failed to build: The command '/bin/sh -c apt-get update && apt-get install -y python libfreetype6-dev libwebp-dev libjpeg62-turbo-dev libpng-dev libzip-dev nano mc git-core libmagickwand-dev --no-install-recommends && pecl install imagick && imagick && docker-php-ext-enable imagick && curl build-essential openssl libssl-dev libgmp-dev libldap2-dev netcat locate && git clone https://github.com/nodejs/node.git && cd node && git checkout v12.0.0 && ./configure && make && make install' returned a non-zero code: 127
我的Dockerfile有什么问题?
UPDATED # 2:我修改了Dockerfile。yml:
FROM php:7.4.1-apache
RUN apt-get update &&
# apt-get install -y
apt-get install --assume-yes --no-install-recommends --quiet
python
libfreetype6-dev
libwebp-dev
libjpeg62-turbo-dev
libpng-dev
libzip-dev
nano
mc
git-core
libmagickwand-dev
curl
build-essential
openssl
libssl-dev
libgmp-dev
libldap2-dev
netcat
locate
# composer
&& git clone https://github.com/nodejs/node.git &&
cd node
&& git checkout v12.0.0
&& ./configure
&& make
&& make install
RUN pecl install imagick
&& docker-php-ext-enable imagick
RUN npm install cross-env
RUN npm install -g yarn
# RUN docker-php-ext-configure gd --with-freetype-dir=/usr/include/ --with-webp-dir=/usr/include/ --with-jpeg-dir=/usr/include/
RUN docker-php-ext-configure gd --with-freetype --with-jpeg
# READ https://github.com/docker-library/php/issues/912#issuecomment-559918036
# Install Composer
RUN curl -sS https://getcomposer.org/installer | php -- --install-dir=/usr/local/bin --filename=composer
RUN docker-php-ext-install gd pdo pdo_mysql zip gmp bcmath pcntl ldap sysvmsg exif
&& a2enmod rewrite
RUN apt-get install -y grep mlocate
RUN docker-php-ext-install imagick
COPY virtualhost.conf /etc/apache2/sites-enabled/000-default.conf
但是运行:
docker-compose up -d --build
我得到错误的输出:
Need to get 97.7 kB of archives.
After this operation, 504 kB of additional disk space will be used.
Get:1 http://deb.debian.org/debian buster/main amd64 mlocate amd64 0.26-3 [97.7 kB]
debconf: delaying package configuration, since apt-utils is not installed
Fetched 97.7 kB in 0s (729 kB/s)
Selecting previously unselected package mlocate.
(Reading database ... 22379 files and directories currently installed.)
Preparing to unpack .../mlocate_0.26-3_amd64.deb ...
Unpacking mlocate (0.26-3) ...
Setting up mlocate (0.26-3) ...
update-alternatives: using /usr/bin/mlocate to provide /usr/bin/locate (locate) in auto mode
update-alternatives: warning: skip creation of /usr/share/man/man1/locate.1.gz because associated file /usr/share/man/man1/mlocate.1.gz (of link group locate) doesn't exist
update-alternatives: warning: skip creation of /usr/share/man/man8/updatedb.8.gz because associated file /usr/share/man/man8/updatedb.mlocate.8.gz (of link group locate) doesn't exist
Adding group `mlocate' (GID 101) ...
Done.
Removing intermediate container 40f86f34f2af
---> edaee648df84
Step 10/11 : RUN docker-php-ext-install imagick
---> Running in a72d0887a6b0
error: /usr/src/php/ext/imagick does not exist
usage: /usr/local/bin/docker-php-ext-install [-jN] ext-name [ext-name ...]
ie: /usr/local/bin/docker-php-ext-install gd mysqli
/usr/local/bin/docker-php-ext-install pdo pdo_mysql
/usr/local/bin/docker-php-ext-install -j5 gd mbstring mysqli pdo pdo_mysql shmop
if custom ./configure arguments are necessary, see docker-php-ext-configure
Possible values for ext-name:
bcmath bz2 calendar ctype curl dba dom enchant exif ffi fileinfo filter ftp gd gettext gmp hash iconv imap intl json ldap mbstring mysqli oci8 odbc opcache pcntl pdo pdo_dblib pdo_firebird pdo_mysql pdo_oci pdo_odbc pdo_pgsql pdo_sqlite pgsql phar posix pspell readline reflection session shmop simplexml snmp soap sockets sodium spl standard sysvmsg sysvsem sysvshm tidy tokenizer xml xmlreader xmlrpc xmlwriter xsl zend_test zip
Some of the above modules are already compiled into PHP; please check
the output of "php -i" to see which modules are already loaded.
ERROR: Service 'web' failed to build: The command '/bin/sh -c docker-php-ext-install imagick' returned a non-zero code: 1
如何解决这个问题?
提前感谢!
消息
You should add "extension=imagick.so" to php.ini
只是一个警告,稍后在您的Dockerfile中解决。真正的错误是由于执行了不存在的二进制imagick
。
你可以这样简化你的Dockerfile:
FROM php:7.4.1-apache
RUN apt-get update
&& apt-get install --assume-yes --no-install-recommends --quiet
build-essential
libmagickwand-dev
&& apt-get clean all
RUN pecl install imagick
&& docker-php-ext-enable imagick
这应该可以解决这个问题。
输出:
STEP 1/3: FROM php:7.4.1-apache
STEP 2/3: RUN apt-get update && apt-get install --assume-yes --no-install-recommends --quiet libmagickwand-dev && apt-get clean all
Get:1 http://security.debian.org/debian-security buster/updates InRelease [65.4 kB]
Get:2 http://deb.debian.org/debian buster InRelease [122 kB]
Get:3 http://deb.debian.org/debian buster-updates InRelease [51.9 kB]
Get:4 http://security.debian.org/debian-security buster/updates/main amd64 Packages [307 kB]
Get:5 http://deb.debian.org/debian buster/main amd64 Packages [7906 kB]
Get:6 http://deb.debian.org/debian buster-updates/main amd64 Packages [15.2 kB]
Fetched 8467 kB in 4s (2170 kB/s)
Reading package lists...
Reading package lists...
Building dependency tree...
Reading state information...
The following additional packages will be installed:
automake autotools-dev fontconfig fontconfig-config fonts-dejavu-core
gir1.2-freedesktop gir1.2-gdkpixbuf-2.0 gir1.2-glib-2.0 gir1.2-rsvg-2.0
icu-devtools imagemagick-6-common libblkid-dev libbz2-dev libcairo-gobject2
libcairo-script-interpreter2 libcairo2 libcairo2-dev libcroco3 libdatrie1
libde265-0 libdjvulibre-dev libdjvulibre-text libdjvulibre21 libelf1
libexif-dev libexif12 libexpat1-dev libffi-dev libfftw3-double3
libfontconfig1 libfontconfig1-dev libfreetype6 libfreetype6-dev libfribidi0
libgdk-pixbuf2.0-0 libgdk-pixbuf2.0-bin libgdk-pixbuf2.0-common
libgdk-pixbuf2.0-dev libgirepository-1.0-1 libglib2.0-0 libglib2.0-bin
libglib2.0-data libglib2.0-dev libglib2.0-dev-bin libgraphite2-3
libharfbuzz0b libheif1 libice-dev libice6 libicu-dev libicu63 libilmbase-dev
libilmbase23 libjbig-dev libjbig0 libjpeg-dev libjpeg62-turbo
libjpeg62-turbo-dev liblcms2-2 liblcms2-dev liblqr-1-0 liblqr-1-0-dev
libltdl-dev libltdl7 liblzma-dev liblzo2-2 libmagickcore-6-arch-config
libmagickcore-6-headers libmagickcore-6.q16-6 libmagickcore-6.q16-6-extra
libmagickcore-6.q16-dev libmagickwand-6-headers libmagickwand-6.q16-6
libmagickwand-6.q16-dev libmount-dev libmpdec2 libnuma1 libopenexr-dev
libopenexr23 libopenjp2-7 libopenjp2-7-dev libpango-1.0-0
libpangocairo-1.0-0 libpangoft2-1.0-0 libpcre16-3 libpcre3-dev libpcre32-3
libpcrecpp0v5 libpixman-1-0 libpixman-1-dev libpng-dev libpng16-16
libpthread-stubs0-dev libpython3-stdlib libpython3.7-minimal
libpython3.7-stdlib libreadline7 librsvg2-2 librsvg2-common librsvg2-dev
libselinux1-dev libsepol1-dev libsm-dev libsm6 libthai-data libthai0
libtiff-dev libtiff5 libtiffxx5 libwebp6 libwebpmux3 libwmf-dev libwmf0.2-7
libx11-6 libx11-data libx11-dev libx265-165 libxau-dev libxau6
libxcb-render0 libxcb-render0-dev libxcb-shm0 libxcb-shm0-dev libxcb1
libxcb1-dev libxdmcp-dev libxdmcp6 libxext-dev libxext6 libxml2 libxml2-dev
libxrender-dev libxrender1 libxt-dev libxt6 python3 python3-distutils
python3-lib2to3 python3-minimal python3.7 python3.7-minimal readline-common
shared-mime-info ucf uuid-dev x11-common x11proto-core-dev x11proto-dev
x11proto-xext-dev xorg-sgml-doctools xtrans-dev zlib1g-dev
Suggested packages:
autoconf-doc gnu-standards libcairo2-doc libfftw3-bin libfftw3-dev
freetype2-doc libglib2.0-doc libxml2-utils libice-doc icu-doc liblcms2-utils
libtool-doc liblzma-doc inkscape librsvg2-bin librsvg2-doc libsm-doc
libwmf-doc libwmf0.2-7-gtk libx11-doc libxcb-doc libxext-doc libxt-doc
python3-doc python3-tk python3-venv python3.7-venv python3.7-doc
binfmt-support readline-doc
Recommended packages:
bzip2-doc libexif-doc xdg-user-dirs libtool ghostscript gsfonts libjxr-tools
libpng-tools
The following NEW packages will be installed:
automake autotools-dev fontconfig fontconfig-config fonts-dejavu-core
gir1.2-freedesktop gir1.2-gdkpixbuf-2.0 gir1.2-glib-2.0 gir1.2-rsvg-2.0
icu-devtools imagemagick-6-common libblkid-dev libbz2-dev libcairo-gobject2
libcairo-script-interpreter2 libcairo2 libcairo2-dev libcroco3 libdatrie1
libde265-0 libdjvulibre-dev libdjvulibre-text libdjvulibre21 libelf1
libexif-dev libexif12 libexpat1-dev libffi-dev libfftw3-double3
libfontconfig1 libfontconfig1-dev libfreetype6 libfreetype6-dev libfribidi0
libgdk-pixbuf2.0-0 libgdk-pixbuf2.0-bin libgdk-pixbuf2.0-common
libgdk-pixbuf2.0-dev libgirepository-1.0-1 libglib2.0-bin libglib2.0-data
libglib2.0-dev libglib2.0-dev-bin libgraphite2-3 libharfbuzz0b libheif1
libice-dev libice6 libicu-dev libilmbase-dev libilmbase23 libjbig-dev
libjbig0 libjpeg-dev libjpeg62-turbo libjpeg62-turbo-dev liblcms2-2
liblcms2-dev liblqr-1-0 liblqr-1-0-dev libltdl-dev libltdl7 liblzma-dev
liblzo2-2 libmagickcore-6-arch-config libmagickcore-6-headers
libmagickcore-6.q16-6 libmagickcore-6.q16-6-extra libmagickcore-6.q16-dev
libmagickwand-6-headers libmagickwand-6.q16-6 libmagickwand-6.q16-dev
libmagickwand-dev libmount-dev libmpdec2 libnuma1 libopenexr-dev
libopenexr23 libopenjp2-7 libopenjp2-7-dev libpango-1.0-0
libpangocairo-1.0-0 libpangoft2-1.0-0 libpcre16-3 libpcre3-dev libpcre32-3
libpcrecpp0v5 libpixman-1-0 libpixman-1-dev libpng-dev libpng16-16
libpthread-stubs0-dev libpython3-stdlib libpython3.7-minimal
libpython3.7-stdlib libreadline7 librsvg2-2 librsvg2-common librsvg2-dev
libselinux1-dev libsepol1-dev libsm-dev libsm6 libthai-data libthai0
libtiff-dev libtiff5 libtiffxx5 libwebp6 libwebpmux3 libwmf-dev libwmf0.2-7
libx11-6 libx11-data libx11-dev libx265-165 libxau-dev libxau6
libxcb-render0 libxcb-render0-dev libxcb-shm0 libxcb-shm0-dev libxcb1
libxcb1-dev libxdmcp-dev libxdmcp6 libxext-dev libxext6 libxml2-dev
libxrender-dev libxrender1 libxt-dev libxt6 python3 python3-distutils
python3-lib2to3 python3-minimal python3.7 python3.7-minimal readline-common
shared-mime-info ucf uuid-dev x11-common x11proto-core-dev x11proto-dev
x11proto-xext-dev xorg-sgml-doctools xtrans-dev zlib1g-dev
The following packages will be upgraded:
libglib2.0-0 libicu63 libxml2
3 upgraded, 150 newly installed, 0 to remove and 46 not upgraded.
Need to get 73.0 MB of archives.
After this operation, 234 MB of additional disk space will be used.
[...]
--> 69135d97974
STEP 3/3: RUN pecl install imagick && docker-php-ext-enable imagick
WARNING: channel "pecl.php.net" has updated its protocols, use "pecl channel-update pecl.php.net" to update
downloading imagick-3.5.1.tgz ...
Starting to download imagick-3.5.1.tgz (301,411 bytes)
.............................................................done: 301,411 bytes
33 source files, building
running: phpize
Configuring for:
PHP Api Version: 20190902
Zend Module Api No: 20190902
Zend Extension Api No: 320190902
Please provide the prefix of ImageMagick installation [autodetect] :
Warning: Use of undefined constant name - assumed 'name' (this will throw an Error in a future version of PHP) in PEAR/Builder.php on line 405
Warning: Use of undefined constant name - assumed 'name' (this will throw an Error in a future version of PHP) in /usr/local/lib/php/PEAR/Builder.php on line 405
building in /tmp/pear/temp/pear-build-defaultuserIJdbl7/imagick-3.5.1
running: /tmp/pear/temp/imagick/configure --with-php-config=/usr/local/bin/php-config --with-imagick
[...]
checking if ImageMagick version is at least 6.2.4... found version 6.9.10
checking for MagickWand.h or magick-wand.h header... /usr/include/ImageMagick-6/wand/MagickWand.h
checking PHP version is at least 5.3.2... yes. found 7.4.1
libs
-lMagickWand-6.Q16 -lMagickCore-6.Q16
checking for MagickGetVersion... yes
[...]
Build complete.
Don't forget to run 'make test'.
running: make INSTALL_ROOT="/tmp/pear/temp/pear-build-defaultuserIJdbl7/install-imagick-3.5.1" install
Installing shared extensions: /tmp/pear/temp/pear-build-defaultuserIJdbl7/install-imagick-3.5.1/usr/local/lib/php/extensions/no-debug-non-zts-20190902/
Installing header files: /tmp/pear/temp/pear-build-defaultuserIJdbl7/install-imagick-3.5.1/usr/local/include/php/
running: find "/tmp/pear/temp/pear-build-defaultuserIJdbl7/install-imagick-3.5.1" | xargs ls -dils
7097429 8 drwxr-xr-x. 3 root root 4096 Oct 11 07:24 /tmp/pear/temp/pear-build-defaultuserIJdbl7/install-imagick-3.5.1
7097485 8 drwxr-xr-x. 3 root root 4096 Oct 11 07:24 /tmp/pear/temp/pear-build-defaultuserIJdbl7/install-imagick-3.5.1/usr
7097487 8 drwxr-xr-x. 4 root root 4096 Oct 11 07:24 /tmp/pear/temp/pear-build-defaultuserIJdbl7/install-imagick-3.5.1/usr/local
7097498 8 drwxr-xr-x. 3 root root 4096 Oct 11 07:24 /tmp/pear/temp/pear-build-defaultuserIJdbl7/install-imagick-3.5.1/usr/local/include
7097501 8 drwxr-xr-x. 3 root root 4096 Oct 11 07:24 /tmp/pear/temp/pear-build-defaultuserIJdbl7/install-imagick-3.5.1/usr/local/include/php
7097503 8 drwxr-xr-x. 3 root root 4096 Oct 11 07:24 /tmp/pear/temp/pear-build-defaultuserIJdbl7/install-imagick-3.5.1/usr/local/include/php/ext
7097505 8 drwxr-xr-x. 2 root root 4096 Oct 11 07:24 /tmp/pear/temp/pear-build-defaultuserIJdbl7/install-imagick-3.5.1/usr/local/include/php/ext/imagick
7097507 4 -rw-r--r--. 1 root root 1828 Oct 11 07:24 /tmp/pear/temp/pear-build-defaultuserIJdbl7/install-imagick-3.5.1/usr/local/include/php/ext/imagick/php_imagick_shared.h
7097489 8 drwxr-xr-x. 3 root root 4096 Oct 11 07:24 /tmp/pear/temp/pear-build-defaultuserIJdbl7/install-imagick-3.5.1/usr/local/lib
7097491 8 drwxr-xr-x. 3 root root 4096 Oct 11 07:24 /tmp/pear/temp/pear-build-defaultuserIJdbl7/install-imagick-3.5.1/usr/local/lib/php
7097493 8 drwxr-xr-x. 3 root root 4096 Oct 11 07:24 /tmp/pear/temp/pear-build-defaultuserIJdbl7/install-imagick-3.5.1/usr/local/lib/php/extensions
7097495 8 drwxr-xr-x. 2 root root 4096 Oct 11 07:24 /tmp/pear/temp/pear-build-defaultuserIJdbl7/install-imagick-3.5.1/usr/local/lib/php/extensions/no-debug-non-zts-20190902
7097483 1608 -rwxr-xr-x. 1 root root 1646360 Oct 11 07:24 /tmp/pear/temp/pear-build-defaultuserIJdbl7/install-imagick-3.5.1/usr/local/lib/php/extensions/no-debug-non-zts-20190902/imagick.so
Build process completed successfully
Installing '/usr/local/include/php/ext/imagick/php_imagick_shared.h'
Installing '/usr/local/lib/php/extensions/no-debug-non-zts-20190902/imagick.so'
install ok: channel://pecl.php.net/imagick-3.5.1
configuration option "php_ini" is not set to php.ini location
You should add "extension=imagick.so" to php.ini
--> 3ee934f2bbd
3ee934f2bbdc1639a02325939d9fc1eefeb16c5803edc33424c18ecc616f7fb1
请使用
安装所需的系统包
运行apt-get update &&
libmagickwand-dev——no-install- recommended
&&docker-php-ext-enable imagick