能否在原生Alpine 3.12 Docker镜像上安装PHP7.4?
我看到了这个repo和它的dockerfile,使用了bintray证书和存储库路径,但我想知道是否有更多“标准/Alpine”方式本地完成此操作的方法?
能否在原生Alpine 3.12 Docker镜像上安装PHP7.4?
我看到了这个repo和它的dockerfile,使用了bintray证书和存储库路径,但我想知道是否有更多“标准/Alpine”方式本地完成此操作的方法?
您可以使用下面的Docker镜像。
FROM alpine:3.12
RUN apk add --no-cache --repository http://dl-cdn.alpinelinux.org/alpine/edge/community php
RUN php -v
输出
Step 3/3 : RUN php -v
---> Running in 9900e66f4b71
PHP 7.4.7 (cli) (built: Jun 14 2020 23:46:20) ( NTS )
Copyright (c) The PHP Group
Zend Engine v3.4.0, Copyright (c) Zend Technologies
Dockerfile
。php:7.4-fpm-alpine3.12
镜像的内容:
正如您所见,他们添加了很多东西来确保PHP运行平稳,并解决启动/上下文问题。FROM alpine:edge
RUN apk add php
RUN php -v
3.12
和edge
),这样做会导致糟糕的结果,并且很难理解出了什么问题。你可能会遇到库错误,因为它混合了来自3.12
和其他来自edge
的软件包:/ # php -m
PHP Warning: PHP Startup: Unable to load dynamic library 'igbinary.so' (tried: /usr/lib/php7/modules/igbinary.so (Error relocating /usr/lib/php7/modules/igbinary.so: php_error_docref0: symbol not found), /usr/lib/php7/modules/igbinary.so.so (Error loading shared library /usr/lib/php7/modules/igbinary.so.so: No such file or directory)) in Unknown on line 0
FROM alpine:edge
。我已将此作为答案编写,而非评论,以包含详细信息:https://dev59.com/sVIG5IYBdhLWcg3wzU2B#63507256。 - glenapine:edge
是一个开发分支,它不仅会安装来自开发分支的 PHP,还会安装所有其他软件包。而在上述 Docker 镜像中,rest 软件包将仅从alpine:3.12
中使用,只有php7.4
将从开发分支安装。 - Adiii