重新定位时出错 - 未找到符号 - 构建 docker-fpm-alpine 映像

Ran*_*cor 6 docker

尝试创建一个图像(来自一个工作图像)我遇到了这个错误,一直在谷歌搜索解决方案但找不到合适的解决方案,我假设库有问题。没有完全理解“Error relocating symbol not found”是什么意思,前面的步骤运行成功,这是错误输出:

    Executing busybox-1.28.4-r1.trigger
Executing ca-certificates-20171114-r3.trigger
OK: 142 MiB in 67 packages
+ mkdir -p /usr/src/php/ext
+ wget https://pecl.php.net/get/memcached
Error relocating /lib/libssl.so.45: explicit_bzero: symbol not found
Error relocating /lib/libssl.so.45: getentropy: symbol not found
Error relocating /lib/libcrypto.so.43: explicit_bzero: symbol not found
Error relocating /lib/libcrypto.so.43: getentropy: symbol not found
Removing intermediate container e3b8422b922a
The command '/bin/sh -c set -xe && apk add --no-cache py-setuptools git wget bash py-setuptools zlib-dev libpng-dev freetype-dev libjpeg-turbo-dev libmcrypt-dev libmemcached-dev icu-dev libxml2-dev && apk add --no-cache libressl-dev cyrus-sasl-dev --repository http://dl-cdn.alpinelinux.org/alpine/edge/main/ rabbitmq-c-dev gnu-libiconv --repository http://dl-cdn.alpinelinux.org/alpine/edge/testing/ --allow-untrusted && mkdir -p /usr/src/php/ext && wget https://pecl.php.net/get/memcached && tar -xf memcached && rm memcached && mv memcached-* /usr/src/php/ext/memcached && wget https://pecl.php.net/get/redis && tar -xf redis && rm redis && mv redis-* /usr/src/php/ext/redis && wget https://pecl.php.net/get/amqp && tar -xf amqp && rm amqp && mv amqp-* /usr/src/php/ext/amqp && wget https://pecl.php.net/get/igbinary && tar -xf igbinary && rm igbinary && mv igbinary-* /usr/src/php/ext/igbinary && wget https://pecl.php.net/get/apcu && tar -xf apcu && rm apcu && mv apcu-* /usr/src/php/ext/apcu && wget https://pecl.php.net/get/mcrypt && tar -xf mcrypt && rm mcrypt && mv mcrypt-* /usr/src/php/ext/mcrypt && git clone --recursive --depth=1 https://github.com/kjdev/php-ext-snappy.git && mv php-ext-snappy /usr/src/php/ext/snappy && docker-php-ext-install pdo_mysql opcache zip pcntl mcrypt iconv soap intl xml amqp igbinary redis snappy apcu && docker-php-ext-configure memcached --enable-memcached-igbinary --disable-memcached-sasl && docker-php-ext-configure gd --with-freetype-dir=/usr/include/ --with-jpeg-dir=/usr/include/ && docker-php-ext-install gd memcached && echo 'extension = "apcu.so"' > /usr/local/etc/php/conf.d/docker-php-ext-apcu.ini && echo 'apc.shm_size = 256M' >> /usr/local/etc/php/conf.d/docker-php-ext-apcu.ini' returned a non-zero code: 127
Run Code Online (Sandbox Code Playgroud)

Dav*_*aze 9

libc.soAlpine Linux 附带的最小 (musl) 系统 C 库 ( ) 与更典型的 Linux 发行版附带的更大 (GNU) libc之间存在充分记录的不兼容性。这些错误消息暗示您被类似的东西绊倒了。

如果您正在安装 142 MB 的开发包,那么您并没有真正构建一个“小”Docker 映像,最简单的解决方法是将您的映像更改为基于ubuntu:18.04而不是它现在可能正在使用的 Alpine 基础。您的最终图像最终会比 200 MB 更像 400 MB,但您不太可能注意到任何实际差异。

  • 从同一个镜像启动额外的容器不需要任何额外的磁盘空间。 (5认同)

Ran*_*cor 3

解决方案正在改变:

http://dl-cdn.alpinelinux.org/alpine/edge/main
Run Code Online (Sandbox Code Playgroud)

http://dl-cdn.alpinelinux.org/alpine/edge/testing
Run Code Online (Sandbox Code Playgroud)

/etc/apk/repositories文件内然后运行apk update && apk upgrade​​.

  • 路径?路径概念与问题中的术语有何关系? (4认同)
  • 这是什么意思? (3认同)
  • 根据答案的投票数:只有 2 人真正了解发生了什么。:) (3认同)