mirror of
https://github.com/devilbox/docker-php-fpm.git
synced 2025-12-10 11:01:14 +00:00
6.0 KiB
6.0 KiB
PHP Mods: Overview |
PHP Mods: options.yml |
PHP Mods: install.yml
Contributor Documentation: PHP Modules
Extension definition: install.yml
Top level defines
| Yaml key | Description |
|---|---|
already_avail |
Array of PHP versions for which we don't have to install the module as it is already present via its FROM image. |
all |
Is generic for all PHP versions and will be used whenever no specific version is defined. |
7.2 |
A version specific block for PHP 7.2. Its child keys will overwrite what has been defined in all. |
Example: Using already_avail
# "{{ php_all_versions }}" Jinja2 variable is available and
# translates to an array of all available PHP versions.
already_avail: "{{ php_all_versions }}"
Example: Overwriting git_ref for a specific version
already_avail: [5.2]
all:
type: git
git_url: https://github.com/phalcon/cphalcon
git_ref: master
# PHP 8.1 is using a different git_ref
8.1:
git_ref: v1.0.0
# PHP 8.0 is using a different git_ref dynamically with latest tag found
# See the usage of supported shell code
8.0:
git_ref: $( git tag | sort -V | tail -1 )
Second level defines
The following keys can be added below: all, 8.2, 8.1, 8.0, 7.4, ...
| Yaml key | Required | Supports Shell code |
Description |
|---|---|---|---|
pre |
No | Yes | Specify a shell command to be run before module installation. |
post |
No | Yes | Specify a shell command to be run after module installation. |
build_dep |
No | No | Array Debian packages required to build the module (they won't be present in the final image - only used to built the module) If you don't need any, assign it an empty array: build_dep: []. |
run_dep |
No | No | Array Debian packages required for the module run-time (they won't be present during the build stage - only in the final image). If you don't need any, assign it an empty array: run_dep: []. |
type |
Yes | No | On of the following types to build the module: builtin, pecl, git, custom. |
Example:
all:
type: builtin
pre: |
ARCH="$(dpkg-architecture --query DEB_BUILD_GNU_TYPE))" \
post: |
rm -f /tmp/file.txt \
build_dep: [libmcrypt-dev]
run_dep: [libmcrypt4]
8.1:
type: builtin
build_dep: []
run_dep: []
Second level defines for type: builtin
| Yaml key | Required | Supports Shell code |
Description |
|---|---|---|---|
configure |
No | Yes | Add ./configure arguments. E.g.:configure: --with-jpeg --with-png |
Example:
all:
type: builtin
8.1:
type: builtin
configure: --with-jpeg --with-png
8.0:
type: builtin
configure: --with-jpeg
Second level defines for type: pecl
| Yaml key | Required | Supports Shell code |
Description |
|---|---|---|---|
version |
No | Yes | Pecl packet version |
command |
No | Yes | Overwrite pecl command (default: pecl install <ext>) |
Example:
all:
type: pecl
command: echo "/usr" | pecl install amqp
build_dep: [librabbitmq-dev]
run_dep: [librabbitmq4]
5.5:
type: pecl
version: 1.9.3
run_dep: [librabbitmq1]
Second level defines for type: git
| Yaml key | Required | Supports Shell code |
Description |
|---|---|---|---|
git_url |
Yes | Yes | Git repository URL |
git_ref |
No | Yes | Tag, branch, commit to check out (shell code supported to dynamically checkout) |
configure |
No | Yes | Add ./configure arguments. |
command |
No | Yes | Overwrite default command (default: phpize && ./configure && make && make install) |
Example:
already_avail: [5.2]
all:
type: git
git_url: https://github.com/phalcon/cphalcon
git_ref: master
# PHP 8.1 is using a different git_ref
8.1:
git_ref: v1.0.0
# PHP 8.0 is using a different git_ref dynamically with latest tag found
# See the usage of supported shell code
8.0:
git_ref: $( git tag | sort -V | tail -1 )
Second level defines for type: custom
| Yaml key | Required | Supports Shell code |
Description |
|---|---|---|---|
command |
Yes | Yes | Custom command to install and enable a module |
Example:
all:
type: custom
command: |
wget http://url/file.tar.gz \
&& tar xvfz file.tar.gz \
&& cd file \
&& phpize \
&& ./configure \
&& make \
&& make install \
Usage of shell code
Single-line vs Multi-line
Note: All keys that support shell code can be written as a single line yaml definition or as a multi line yaml definition. Multi-line yaml definitions need a trailing \ at the end of each line, including the last line.
Single-line:
all:
pre: VERSION="$( curl http://url | grep -Eo '[0-9.]+' )"
Multi-line:
all:
pre: |
VERSION="$( \
curl http://url \
| grep -Eo '[0-9.]+' \
)" \
Single-command vs Multi-command
Note: All keys that support shell code also support to write multiple shell commands. If you use multiple shell commands, you need to separate them with &&.
Single-command:
all:
pre: |
VERSION="$( \
curl http://url \
| grep -Eo '[0-9.]+' \
)" \
Multi-command:
all:
pre: |
URL="http://url" \
&& VERSION="$( \
curl "${URL} \
| grep -Eo '[0-9.]+' \
)" \
&& echo "${VERSION}" \