Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
20 changes: 20 additions & 0 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -53,6 +53,26 @@ docker run --rm -ti -v $PWD:/app -w /app webdevops/php:8.4-alpine ci/console git
Gitlab CI builds every image independent and runs serverspec and structure tests on every
image before pushing them to the registry.

### PHP extension builds

PHP images require Docker BuildKit. The official `ghcr.io/php/pie:bin` image
supplies PIE through a build-only mount; the existing INI configuration still
controls extension loading. PIE requests remain unpinned, and compilation uses
`nproc` parallel jobs.

Protobuf, Vips and XML-RPC are built directly from their official upstream sources.
The existing XML-RPC **1.0.0RC3** pin is preserved on all supported PHP versions.
Protobuf on PHP 8.2–8.5 uses the latest upstream release. If a future release raises its minimum PHP
version, older PHP image builds can fail; there is no automatic fallback to an
older release. The existing CI matrix checks compatibility across PHP versions.

The native Vips extension is deprecated and no longer maintained upstream. It is
retained for existing applications, using the upstream default branch (currently
`master`): GitHub tags predate the PECL 1.0.13 release and would downgrade the
extension. This includes changes beyond the last PECL release.
No extension installation needs `pecl.php.net`; Serverspec and container structure
tests retain their existing image matrix.

## Documentation

As in many projects the documentation is kind of up to date 😅.
Expand Down
11 changes: 9 additions & 2 deletions docker/php-apache-dev/8.2-alpine/Dockerfile
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,8 @@ ENV WEB_NO_CACHE_PATTERN="\.(css|js|gif|png|jpg|svg|json|xml)$"

COPY conf/ /opt/docker/

RUN set -x \
RUN --mount=type=bind,from=ghcr.io/php/pie:bin,source=/pie,target=/usr/local/bin/pie \
set -x \
# Install development environment
&& bash -c "$(curl -L https://installer.blackfire.io/installer.sh)" \
&& blackfire php:install \
Expand All @@ -24,12 +25,18 @@ RUN set -x \
make \
autoconf \
g++ \
&& pecl install xdebug \
libtool \
pkgconf \
&& PIE_WORKING_DIRECTORY=/tmp/pie pie install --no-interaction --no-cache \
--skip-enable-extension --make-parallel-jobs="$(nproc)" xdebug/xdebug \
&& rm -rf /tmp/pie \
&& apk del -f --purge \
autoconf \
linux-headers \
g++ \
make \
libtool \
pkgconf \
&& docker-php-ext-enable xdebug \
# Enable php development services
&& docker-service enable syslog \
Expand Down
3 changes: 2 additions & 1 deletion docker/php-apache-dev/8.2-alpine/Dockerfile.jinja2
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,7 @@

{{ docker.copy('conf/', '/opt/docker/') }}

RUN set -x \
RUN --mount=type=bind,from=ghcr.io/php/pie:bin,source=/pie,target=/usr/local/bin/pie \
set -x \
{{ php.officialDevelopmentAlpine(version="8.2") }} \
{{ provision.runBootstrap() }}
7 changes: 5 additions & 2 deletions docker/php-apache-dev/8.2/Dockerfile
Original file line number Diff line number Diff line change
Expand Up @@ -15,14 +15,17 @@ ENV WEB_NO_CACHE_PATTERN="\.(css|js|gif|png|jpg|svg|json|xml)$"

COPY conf/ /opt/docker/

RUN set -x \
RUN --mount=type=bind,from=ghcr.io/php/pie:bin,source=/pie,target=/usr/local/bin/pie \
set -x \
# Install development environment
&& BLACKFIRE_INSTALL_METHOD=raw bash -c "$(curl -L https://installer.blackfire.io/installer.sh)" \
&& blackfire php:install \
&& echo 'deb https://packages.tideways.com/apt-packages-main any-version main' | tee /etc/apt/sources.list.d/tideways.list \
&& wget -qO - https://packages.tideways.com/key.gpg | apt-key add - \
&& apt-install tideways-php tideways-daemon \
&& pecl install xdebug \
&& PIE_WORKING_DIRECTORY=/tmp/pie pie install --no-interaction --no-cache \
--skip-enable-extension --make-parallel-jobs="$(nproc)" xdebug/xdebug \
&& rm -rf /tmp/pie \
&& docker-php-ext-enable xdebug \
# Enable php development services
&& docker-service enable syslog \
Expand Down
3 changes: 2 additions & 1 deletion docker/php-apache-dev/8.2/Dockerfile.jinja2
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,8 @@

{{ docker.copy('conf/', '/opt/docker/') }}

RUN set -x \
RUN --mount=type=bind,from=ghcr.io/php/pie:bin,source=/pie,target=/usr/local/bin/pie \
set -x \
{{ php.officialDevelopment(version="8.2") }} \
{{ provision.runBootstrap() }} \
{{ docker.cleanup() }}
11 changes: 9 additions & 2 deletions docker/php-apache-dev/8.3-alpine/Dockerfile
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,8 @@ ENV WEB_NO_CACHE_PATTERN="\.(css|js|gif|png|jpg|svg|json|xml)$"

COPY conf/ /opt/docker/

RUN set -x \
RUN --mount=type=bind,from=ghcr.io/php/pie:bin,source=/pie,target=/usr/local/bin/pie \
set -x \
# Install development environment
&& bash -c "$(curl -L https://installer.blackfire.io/installer.sh)" \
&& blackfire php:install \
Expand All @@ -24,12 +25,18 @@ RUN set -x \
make \
autoconf \
g++ \
&& pecl install xdebug \
libtool \
pkgconf \
&& PIE_WORKING_DIRECTORY=/tmp/pie pie install --no-interaction --no-cache \
--skip-enable-extension --make-parallel-jobs="$(nproc)" xdebug/xdebug \
&& rm -rf /tmp/pie \
&& apk del -f --purge \
autoconf \
linux-headers \
g++ \
make \
libtool \
pkgconf \
&& docker-php-ext-enable xdebug \
# Enable php development services
&& docker-service enable syslog \
Expand Down
3 changes: 2 additions & 1 deletion docker/php-apache-dev/8.3-alpine/Dockerfile.jinja2
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,7 @@

{{ docker.copy('conf/', '/opt/docker/') }}

RUN set -x \
RUN --mount=type=bind,from=ghcr.io/php/pie:bin,source=/pie,target=/usr/local/bin/pie \
set -x \
{{ php.officialDevelopmentAlpine(version="8.3") }} \
{{ provision.runBootstrap() }}
7 changes: 5 additions & 2 deletions docker/php-apache-dev/8.3/Dockerfile
Original file line number Diff line number Diff line change
Expand Up @@ -15,14 +15,17 @@ ENV WEB_NO_CACHE_PATTERN="\.(css|js|gif|png|jpg|svg|json|xml)$"

COPY conf/ /opt/docker/

RUN set -x \
RUN --mount=type=bind,from=ghcr.io/php/pie:bin,source=/pie,target=/usr/local/bin/pie \
set -x \
# Install development environment
&& BLACKFIRE_INSTALL_METHOD=raw bash -c "$(curl -L https://installer.blackfire.io/installer.sh)" \
&& blackfire php:install \
&& echo 'deb https://packages.tideways.com/apt-packages-main any-version main' | tee /etc/apt/sources.list.d/tideways.list \
&& wget -qO - https://packages.tideways.com/key.gpg | apt-key add - \
&& apt-install tideways-php tideways-daemon \
&& pecl install xdebug \
&& PIE_WORKING_DIRECTORY=/tmp/pie pie install --no-interaction --no-cache \
--skip-enable-extension --make-parallel-jobs="$(nproc)" xdebug/xdebug \
&& rm -rf /tmp/pie \
&& docker-php-ext-enable xdebug \
# Enable php development services
&& docker-service enable syslog \
Expand Down
3 changes: 2 additions & 1 deletion docker/php-apache-dev/8.3/Dockerfile.jinja2
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,8 @@

{{ docker.copy('conf/', '/opt/docker/') }}

RUN set -x \
RUN --mount=type=bind,from=ghcr.io/php/pie:bin,source=/pie,target=/usr/local/bin/pie \
set -x \
{{ php.officialDevelopment(version="8.3") }} \
{{ provision.runBootstrap() }} \
{{ docker.cleanup() }}
11 changes: 9 additions & 2 deletions docker/php-apache-dev/8.4-alpine/Dockerfile
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,8 @@ ENV WEB_NO_CACHE_PATTERN="\.(css|js|gif|png|jpg|svg|json|xml)$"

COPY conf/ /opt/docker/

RUN set -x \
RUN --mount=type=bind,from=ghcr.io/php/pie:bin,source=/pie,target=/usr/local/bin/pie \
set -x \
# Install development environment
&& bash -c "$(curl -L https://installer.blackfire.io/installer.sh)" \
&& blackfire php:install \
Expand All @@ -24,12 +25,18 @@ RUN set -x \
make \
autoconf \
g++ \
&& pecl install xdebug \
libtool \
pkgconf \
&& PIE_WORKING_DIRECTORY=/tmp/pie pie install --no-interaction --no-cache \
--skip-enable-extension --make-parallel-jobs="$(nproc)" xdebug/xdebug \
&& rm -rf /tmp/pie \
&& apk del -f --purge \
autoconf \
linux-headers \
g++ \
make \
libtool \
pkgconf \
&& docker-php-ext-enable xdebug \
# Enable php development services
&& docker-service enable syslog \
Expand Down
3 changes: 2 additions & 1 deletion docker/php-apache-dev/8.4-alpine/Dockerfile.jinja2
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,7 @@

{{ docker.copy('conf/', '/opt/docker/') }}

RUN set -x \
RUN --mount=type=bind,from=ghcr.io/php/pie:bin,source=/pie,target=/usr/local/bin/pie \
set -x \
{{ php.officialDevelopmentAlpine(version="8.4") }} \
{{ provision.runBootstrap() }}
7 changes: 5 additions & 2 deletions docker/php-apache-dev/8.4/Dockerfile
Original file line number Diff line number Diff line change
Expand Up @@ -15,14 +15,17 @@ ENV WEB_NO_CACHE_PATTERN="\.(css|js|gif|png|jpg|svg|json|xml)$"

COPY conf/ /opt/docker/

RUN set -x \
RUN --mount=type=bind,from=ghcr.io/php/pie:bin,source=/pie,target=/usr/local/bin/pie \
set -x \
# Install development environment
&& BLACKFIRE_INSTALL_METHOD=raw bash -c "$(curl -L https://installer.blackfire.io/installer.sh)" \
&& blackfire php:install \
&& echo 'deb https://packages.tideways.com/apt-packages-main any-version main' | tee /etc/apt/sources.list.d/tideways.list \
&& wget -qO - https://packages.tideways.com/key.gpg | apt-key add - \
&& apt-install tideways-php tideways-daemon \
&& pecl install xdebug \
&& PIE_WORKING_DIRECTORY=/tmp/pie pie install --no-interaction --no-cache \
--skip-enable-extension --make-parallel-jobs="$(nproc)" xdebug/xdebug \
&& rm -rf /tmp/pie \
&& docker-php-ext-enable xdebug \
# Enable php development services
&& docker-service enable syslog \
Expand Down
3 changes: 2 additions & 1 deletion docker/php-apache-dev/8.4/Dockerfile.jinja2
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,8 @@

{{ docker.copy('conf/', '/opt/docker/') }}

RUN set -x \
RUN --mount=type=bind,from=ghcr.io/php/pie:bin,source=/pie,target=/usr/local/bin/pie \
set -x \
{{ php.officialDevelopment(version="8.4") }} \
{{ provision.runBootstrap() }} \
{{ docker.cleanup() }}
11 changes: 9 additions & 2 deletions docker/php-apache-dev/8.5-alpine/Dockerfile
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,8 @@ ENV WEB_NO_CACHE_PATTERN="\.(css|js|gif|png|jpg|svg|json|xml)$"

COPY conf/ /opt/docker/

RUN set -x \
RUN --mount=type=bind,from=ghcr.io/php/pie:bin,source=/pie,target=/usr/local/bin/pie \
set -x \
# Install development environment
&& bash -c "$(curl -L https://installer.blackfire.io/installer.sh)" \
&& blackfire php:install \
Expand All @@ -24,12 +25,18 @@ RUN set -x \
make \
autoconf \
g++ \
&& pecl install xdebug \
libtool \
pkgconf \
&& PIE_WORKING_DIRECTORY=/tmp/pie pie install --no-interaction --no-cache \
--skip-enable-extension --make-parallel-jobs="$(nproc)" xdebug/xdebug \
&& rm -rf /tmp/pie \
&& apk del -f --purge \
autoconf \
linux-headers \
g++ \
make \
libtool \
pkgconf \
&& docker-php-ext-enable xdebug \
# Enable php development services
&& docker-service enable syslog \
Expand Down
3 changes: 2 additions & 1 deletion docker/php-apache-dev/8.5-alpine/Dockerfile.jinja2
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,7 @@

{{ docker.copy('conf/', '/opt/docker/') }}

RUN set -x \
RUN --mount=type=bind,from=ghcr.io/php/pie:bin,source=/pie,target=/usr/local/bin/pie \
set -x \
{{ php.officialDevelopmentAlpine(version="8.5") }} \
{{ provision.runBootstrap() }}
7 changes: 5 additions & 2 deletions docker/php-apache-dev/8.5/Dockerfile
Original file line number Diff line number Diff line change
Expand Up @@ -15,14 +15,17 @@ ENV WEB_NO_CACHE_PATTERN="\.(css|js|gif|png|jpg|svg|json|xml)$"

COPY conf/ /opt/docker/

RUN set -x \
RUN --mount=type=bind,from=ghcr.io/php/pie:bin,source=/pie,target=/usr/local/bin/pie \
set -x \
# Install development environment
&& BLACKFIRE_INSTALL_METHOD=raw bash -c "$(curl -L https://installer.blackfire.io/installer.sh)" \
&& blackfire php:install \
&& echo 'deb https://packages.tideways.com/apt-packages-main any-version main' | tee /etc/apt/sources.list.d/tideways.list \
&& wget -qO - https://packages.tideways.com/key.gpg | apt-key add - \
&& apt-install tideways-php tideways-daemon \
&& pecl install xdebug \
&& PIE_WORKING_DIRECTORY=/tmp/pie pie install --no-interaction --no-cache \
--skip-enable-extension --make-parallel-jobs="$(nproc)" xdebug/xdebug \
&& rm -rf /tmp/pie \
&& docker-php-ext-enable xdebug \
# Enable php development services
&& docker-service enable syslog \
Expand Down
3 changes: 2 additions & 1 deletion docker/php-apache-dev/8.5/Dockerfile.jinja2
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,8 @@

{{ docker.copy('conf/', '/opt/docker/') }}

RUN set -x \
RUN --mount=type=bind,from=ghcr.io/php/pie:bin,source=/pie,target=/usr/local/bin/pie \
set -x \
{{ php.officialDevelopment(version="8.5") }} \
{{ provision.runBootstrap() }} \
{{ docker.cleanup() }}
11 changes: 9 additions & 2 deletions docker/php-dev/8.2-alpine/Dockerfile
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,8 @@ FROM webdevops/php:8.2-alpine

COPY conf/ /opt/docker/

RUN set -x \
RUN --mount=type=bind,from=ghcr.io/php/pie:bin,source=/pie,target=/usr/local/bin/pie \
set -x \
# Install development environment
&& bash -c "$(curl -L https://installer.blackfire.io/installer.sh)" \
&& blackfire php:install \
Expand All @@ -16,12 +17,18 @@ RUN set -x \
make \
autoconf \
g++ \
&& pecl install xdebug \
libtool \
pkgconf \
&& PIE_WORKING_DIRECTORY=/tmp/pie pie install --no-interaction --no-cache \
--skip-enable-extension --make-parallel-jobs="$(nproc)" xdebug/xdebug \
&& rm -rf /tmp/pie \
&& apk del -f --purge \
autoconf \
linux-headers \
g++ \
make \
libtool \
pkgconf \
&& docker-php-ext-enable xdebug \
# Enable php development services
&& docker-service enable syslog \
Expand Down
3 changes: 2 additions & 1 deletion docker/php-dev/8.2-alpine/Dockerfile.jinja2
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,7 @@

{{ docker.copy('conf/', '/opt/docker/') }}

RUN set -x \
RUN --mount=type=bind,from=ghcr.io/php/pie:bin,source=/pie,target=/usr/local/bin/pie \
set -x \
{{ php.officialDevelopmentAlpine(version="8.2") }} \
{{ provision.runBootstrap() }}
7 changes: 5 additions & 2 deletions docker/php-dev/8.2/Dockerfile
Original file line number Diff line number Diff line change
Expand Up @@ -7,14 +7,17 @@ FROM webdevops/php:8.2

COPY conf/ /opt/docker/

RUN set -x \
RUN --mount=type=bind,from=ghcr.io/php/pie:bin,source=/pie,target=/usr/local/bin/pie \
set -x \
# Install development environment
&& BLACKFIRE_INSTALL_METHOD=raw bash -c "$(curl -L https://installer.blackfire.io/installer.sh)" \
&& blackfire php:install \
&& echo 'deb https://packages.tideways.com/apt-packages-main any-version main' | tee /etc/apt/sources.list.d/tideways.list \
&& wget -qO - https://packages.tideways.com/key.gpg | apt-key add - \
&& apt-install tideways-php tideways-daemon \
&& pecl install xdebug \
&& PIE_WORKING_DIRECTORY=/tmp/pie pie install --no-interaction --no-cache \
--skip-enable-extension --make-parallel-jobs="$(nproc)" xdebug/xdebug \
&& rm -rf /tmp/pie \
&& docker-php-ext-enable xdebug \
# Enable php development services
&& docker-service enable syslog \
Expand Down
3 changes: 2 additions & 1 deletion docker/php-dev/8.2/Dockerfile.jinja2
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,8 @@

{{ docker.copy('conf/', '/opt/docker/') }}

RUN set -x \
RUN --mount=type=bind,from=ghcr.io/php/pie:bin,source=/pie,target=/usr/local/bin/pie \
set -x \
{{ php.officialDevelopment(version="8.2") }} \
{{ provision.runBootstrap() }} \
{{ docker.cleanup() }}
Loading
Loading