是否可以在库存的 Alpine 3.12 Docker 图像上安装 PHP7.4?

Is it possible to install PHP7.4 on stock Alpine 3.12 Docker image?

是否可以在 stock Alpine 3.12 Docker 图像上安装 PHP7.4?

我已经看到 this repo 及其使用 bintray 证书和存储库路径的 dockerfile,但我想知道是否有更“standard/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:

https://github.com/docker-library/php/blob/86c8ec4d387132b65dbe6c5ab1747f858e03852e/7.4/alpine3.12/fpm/Dockerfile

如您所见,他们添加了很多东西以确保 PHP 运行顺畅并解决启动/上下文问题。

使用高山边缘:

FROM alpine:edge
RUN apk add php
RUN php -v

这是对 答案的更新,建议混合两个高山版本(3.12edge),这是糟糕的结果,很难理解哪里出了问题。您可能会遇到库错误,因为它混合了来自 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