Skip to content

Upgrade DevStack to PHP 8.5 and modernize infrastructure - #19

Open
f3l1x wants to merge 2 commits into
masterfrom
claude/ci-errors-lqusvt
Open

Upgrade DevStack to PHP 8.5 and modernize infrastructure#19
f3l1x wants to merge 2 commits into
masterfrom
claude/ci-errors-lqusvt

Conversation

@f3l1x

@f3l1x f3l1x commented Aug 10, 2026

Copy link
Copy Markdown
Member

Summary

This PR modernizes the Dockette DevStack by upgrading to PHP 8.5 as the primary PHP version, updating the base Docker images to Debian Bookworm, and removing support for legacy PHP versions (5.6 and 7.1-7.2).

Key Changes

  • PHP Version Upgrade: Replaced PHP 7.2 with PHP 8.5 as the primary runtime

    • Updated all PHP environment variables to use dynamic PHP_VERSION variable
    • Modernized Xdebug configuration for PHP 8.5+ (using xdebug.mode, xdebug.client_host, etc. instead of deprecated xdebug.remote_* settings)
    • Updated package names (e.g., php-mongophp-mongodb)
  • Base Image Modernization:

    • Changed from dockette/stretch to dockette/debian:bookworm across all services
    • Updated Apache, Node.js, and PHP Dockerfiles to use Bookworm base
  • Removed Legacy PHP Versions:

    • Deleted PHP 5.6 and PHP 7.1-7.2 Dockerfiles and configurations
    • Removed corresponding Apache virtual host configurations
    • Cleaned up docker-compose.yml to remove php56 service references
  • Dependency Updates:

    • MariaDB: 10.1 → 12.3
    • PostgreSQL: 9.6 → 18 (in comments)
    • Node.js: 8.x → 24.x (latest LTS)
    • Updated Blackfire installation to use official package repositories instead of manual binary downloads
  • Package Management Improvements:

    • Migrated from deprecated apt commands to apt-get
    • Updated GPG key handling to use /etc/apt/keyrings (modern Debian standard)
    • Simplified Blackfire installation by using official packages
    • Removed deprecated Composer plugins (prestissimo)
  • Configuration Updates:

    • Updated docker-compose.yml to reference php85 instead of php72
    • Changed MAINTAINER to LABEL in Dockerfiles (Docker best practice)
    • Updated README and documentation to reflect new versions
  • Build System: Updated Makefile to build php85-fpm instead of php72-fpm

Implementation Details

  • Xdebug configuration now uses the modern API (PHP 8.5 compatible)
  • Composer environment variables explicitly set (COMPOSER_HOME, COMPOSER_ALLOW_SUPERUSER)
  • Blackfire agent configuration simplified through official package installation
  • All symbolic links changed from ln -s to ln -sf for safer idempotency

https://claude.ai/code/session_01QNkYkDFukA7kdCTsnWLrCD

claude added 2 commits August 10, 2026 09:48
CI has been red on every run since stretch was archived: the images build on
dockette/stretch, whose apt sources 404 because Debian stretch is EOL and was
removed from deb.debian.org and security.debian.org.

Rather than pin the dead suite to archive.debian.org, move the whole stack to
current upstream versions.

- Base all images on dockette/debian:bookworm.
- Replace the php/{5.6,5.6-fpm,7.1,7.1-fpm,7.2,7.2-fpm} matrix with
  php/8.5 and php/8.5-fpm; sury publishes no PHP 5.6/7.x for bookworm.
- Install Node.js 24.19.0 (latest LTS) from the official nodejs.org tarball;
  the nodesource setup_10.x script and its stretch distribution are gone.
  Node 18+ also needs glibc 2.28, which stretch cannot provide.
- Drop PHP extensions that no longer exist for PHP 8.x: apc (superseded by
  apcu), geoip, mcrypt, imap (unbundled in 8.4), xmlrpc (removed from core in
  8.0) and imagick; mongo becomes mongodb.
- Install the Blackfire probe from packages.blackfire.io instead of hardcoded
  binary URLs, and drop the stray override that pointed the agent socket at a
  public IP instead of BLACKFIRE_AGENT.
- Drop hirak/prestissimo, a Composer 1-only plugin that breaks Composer 2, and
  set COMPOSER_HOME so the global bin path stays /root/.composer.
- Rewrite devstack.ini for Xdebug 3 (mode/start_with_request/client_host);
  the Xdebug 2 remote_* keys were silently ignored.
- Bump MariaDB 10.1 to 12.3 and PostgreSQL 9.6 to 18, drop the obsolete
  compose version key, and rename service php72 to php85 (vhost local.dev7
  becomes local.dev8).
- Update actions/checkout to v7 and docker/setup-buildx-action to v4, clearing
  the Node 20 deprecation warnings.
- Refresh README and AGENTS.md for the new versions and service names.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01QNkYkDFukA7kdCTsnWLrCD
The bookworm base has no /etc/ssh, unlike the stretch base, so appending the
IdentityFile line to /etc/ssh/ssh_config failed the PHP build:

    /bin/sh: 1: cannot create /etc/ssh/ssh_config: Directory nonexistent

Install openssh-client, which ships that file. The compose file mounts the SSH
agent socket into the nodejs container too, so add it there as well.

Also restore php8.5-ssh2, dropped from the extension list by mistake during the
migration; unlike the removed extensions it is still published for PHP 8.x.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01QNkYkDFukA7kdCTsnWLrCD
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Development

Successfully merging this pull request may close these issues.

2 participants