Docker composer生成错误:错误:无法选择包



当我运行docker composer builddocker compose build --no-cache时,我得到以下错误。

起初我以为是网络问题。但我通过在docker文件中放置ping命令来测试容器是否可以访问互联网,该文件成功地接收到ping响应。

问题是什么,我该如何解决?

Step 6/16 : RUN apk add --upgrade --no-cache     acl     bash     bash-doc     bash-completion     autoconf     icu-dev     libxml2-dev     mysql-dev     pcre     php7-ctype     php7-fileinfo     php7-gd     php7-intl     php7-json     php7-mbstring     php7-openssl     php7-simplexml     php7-tokenizer     php7-xml     php7-bcmath     php7-pdo     php7-pdo_mysql     freetype-dev     libjpeg-turbo-dev     libpng-dev     nodejs     patch     tidyhtml-dev     imap-dev     libzip-dev     git     python2
---> Running in 1ae4ac5b75b6
fetch https://dl-cdn.alpinelinux.org/alpine/v3.16/main/x86_64/APKINDEX.tar.gz
fetch https://dl-cdn.alpinelinux.org/alpine/v3.16/community/x86_64/APKINDEX.tar.gz
ERROR: unable to select packages:
php7-bcmath (no such package):
required by: world[php7-bcmath]
php7-ctype (no such package):
required by: world[php7-ctype]
php7-fileinfo (no such package):
required by: world[php7-fileinfo]
php7-gd (no such package):
required by: world[php7-gd]
php7-intl (no such package):
required by: world[php7-intl]
php7-json (no such package):
required by: world[php7-json]
php7-mbstring (no such package):
required by: world[php7-mbstring]
php7-openssl (no such package):
required by: world[php7-openssl]
php7-pdo (no such package):
required by: world[php7-pdo]
php7-pdo_mysql (no such package):
required by: world[php7-pdo_mysql]
php7-simplexml (no such package):
required by: world[php7-simplexml]
php7-tokenizer (no such package):
required by: world[php7-tokenizer]
php7-xml (no such package):
required by: world[php7-xml]
python2 (no such package):
required by: world[python2]
ERROR: Service 'application' failed to build: The command '/bin/sh -c apk add --upgrade --no-cache     acl     bash     bash-doc     bash-completion     autoconf     icu-dev     libxml2-dev     mysql-dev     pcre     php7-ctype     php7-fileinfo     php7-gd     php7-intl     php7-json     php7-mbstring     php7-openssl     php7-simplexml     php7-tokenizer     php7-xml     php7-bcmath     php7-pdo     php7-pdo_mysql     freetype-dev     libjpeg-turbo-dev     libpng-dev     nodejs     patch     tidyhtml-dev     imap-dev     libzip-dev     git     python2' returned a non-zero code: 14

编辑:

尝试了@Mureinik使用FROM php:7.4-fpm-alpine3.15而不是FROM php:7.4-fpm-alpine的建议。当我把它打成平手时,它就超过了最初的错误。但我得到了一个不同的错误。请参见下文。

#0 69.23 creating libtool
#0 69.26 appending configuration tag "CXX" to libtool
#0 69.32 configure: patching config.h.in
#0 69.32 configure: creating ./config.status
#0 69.36 config.status: creating config.h
#0 69.39 /bin/sh /usr/src/php/ext/iconv/libtool --mode=compile cc -I"/usr/include" -DZEND_ENABLE_STATIC_TSRMLS_CACHE=1 -I. -I/usr/src/php/ext/iconv -DPHP_ATOM_INC -I/usr/src/php/ext/iconv/include -I/usr/src/php/ext/iconv/main -I/usr/src/php/ext/iconv -I/usr/local/include/php -I/usr/local/include/php/main -I/usr/local/include/php/TSRM -I/usr/local/include/php/Zend -I/usr/local/include/php/ext -I/usr/local/include/php/ext/date/lib  -fstack-protector-strong -fpic -fpie -O2 -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -DHAVE_CONFIG_H  -I/usr/include -fstack-protector-strong -fpic -fpie -O2 -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64   -c /usr/src/php/ext/iconv/iconv.c -o iconv.lo 
#0 69.45 mkdir .libs
#0 69.45  cc -I/usr/include -DZEND_ENABLE_STATIC_TSRMLS_CACHE=1 -I. -I/usr/src/php/ext/iconv -DPHP_ATOM_INC -I/usr/src/php/ext/iconv/include -I/usr/src/php/ext/iconv/main -I/usr/src/php/ext/iconv -I/usr/local/include/php -I/usr/local/include/php/main -I/usr/local/include/php/TSRM -I/usr/local/include/php/Zend -I/usr/local/include/php/ext -I/usr/local/include/php/ext/date/lib -fstack-protector-strong -fpic -fpie -O2 -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -DHAVE_CONFIG_H -I/usr/include -fstack-protector-strong -fpic -fpie -O2 -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -c /usr/src/php/ext/iconv/iconv.c  -fPIC -DPIC -o .libs/iconv.o
#0 69.60 /usr/src/php/ext/iconv/iconv.c: In function 'zm_startup_miconv':
#0 69.60 /usr/src/php/ext/iconv/iconv.c:284:4: error: '_libiconv_version' undeclared (first use in this function)
#0 69.60   284 |    _libiconv_version >> 8, _libiconv_version & 0xff);
#0 69.60       |    ^~~~~~~~~~~~~~~~~
#0 69.60 /usr/src/php/ext/iconv/iconv.c:284:4: note: each undeclared identifier is reported only once for each function it appears in
#0 69.60 /usr/src/php/ext/iconv/iconv.c: In function '_php_iconv_appendl':
#0 69.60 /usr/src/php/ext/iconv/iconv.c:181:15: warning: implicit declaration of function 'libiconv'; did you mean 'iconv'? [-Wimplicit-function-declaration]
#0 69.60   181 | #define iconv libiconv
#0 69.60       |               ^~~~~~~~
#0 69.60 /usr/src/php/ext/iconv/iconv.c:453:8: note: in expansion of macro 'iconv'
#0 69.60   453 |    if (iconv(cd, (char **)&in_p, &in_left, (char **) &out_p, &out_left) == (size_t)-1) {
#0 69.60       |        ^~~~~
#0 69.64 make: *** [Makefile:192: iconv.lo] Error 1
------
failed to solve: executor failed running [/bin/sh -c docker-php-ext-install intl zip pcntl pdo_mysql iconv opcache soap tidy imap bcmath &&     php -r 'ini_set("display_errors", 1); error_reporting(-1); iconv("UTF-8", "ASCII//TRANSLIT", "foobar");']: exit code: 2

我查看了php7-bcmath包,但似乎大多数包都出现了相同的问题。该软件包有针对Alpine 3.13到3.15的版本,但最新的Alpine是3.16,它还没有针对该软件包的版本。你可以等到它可用,或者将你的Dockerfile锁定到一个特定的Alpine版本,该版本有这个包的构建,例如:

FROM alpine:3.15

编辑:
根据注释中提供的其他信息,dockerfile使用FROM php:7.4-fpm-alpine,后者在内部使用FROM alpine。相反,你可以使用一个锁定到特定Alpine版本的版本:

FROM php:7.4-fpm-alpine3.15

您可能缺少/etc/apk/repositories下的一些存储库,其中包含这些包。您需要先添加它们,然后才能下载它们。

最新更新