Is it possible to install PHP7.4 on stock Alpine 3.12 Docker image?
Solution 1
You can use below Docker image.
FROM alpine:3.12
RUN apk add --no-cache --repository http://dl-cdn.alpinelinux.org/alpine/edge/community php
RUN php -v
output
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
Solution 2
If you want to see a full fledged example it's always best to investigate the vendor's Dockerfile
.
This is from image php:7.4-fpm-alpine3.12
:
As you can see, they add a lot of stuff to ensure PHP runs smooth and startup / context problems are solved.
Solution 3
Use alpine edge:
FROM alpine:edge
RUN apk add php
RUN php -v
This is update to Adiii answer suggesting to mix two alpine versions (3.12
and edge
), this is terrible outcome, and difficult to understand what went wrong. You may end up with library errors, because it mixed one package from 3.12
and other package from 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
Comments
-
Norgul almost 2 years
Is it possible to install PHP7.4 on stock Alpine 3.12 Docker image?
I have seen this repo and its dockerfile which is using bintray cert and repository path, but I was wondering if there is a more "standard/Alpine" way of doing this natively?
-
glen over 3 yearsDo not mix two distro versions (3.12 and edge), just use
FROM alpine:edge
, I've written this as an answer instead of a comment to include the details: stackoverflow.com/a/63507256/2314626 -
Adiii over 3 years@ElanRuusamäe
apine:edge
is a development branch, it will not only install PHP from development branch but all other packages too. while in the above docker image rest package will be used fromalpine:3.12
only thephp7.4
will be installed from dev branch. -
glen over 3 yearsand that's the problem, php on edge is built with libraries from edge, but you have installed libraries from 3.12 and php from edge, that brings linking incompatibilities as described in my linked post,
igbinary.so: php_error_docref0: symbol not found
in the example