Skip to content

Commit 66cd7ec

Browse files
KingPinKingPin
authored andcommitted
docs: add comprehensive Trixie migration documentation
- Update README with Trixie migration notice and base OS clarification - Add detailed migration guide section in docs/migration.md - Create CHANGELOG.md with unreleased Trixie migration entry - Document tag mapping (trixie/bookworm/bullseye compatibility) - Add library version comparison table (t64 time64 updates) - Include testing checklist, rollback plan, and FAQ - Clarify v1 vs v2 base OS differences
1 parent 4936ac9 commit 66cd7ec

File tree

3 files changed

+154
-4
lines changed

3 files changed

+154
-4
lines changed

CHANGELOG.md

Lines changed: 38 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,38 @@
1+
# Changelog
2+
3+
All notable changes to this project will be documented in this file.
4+
5+
The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
6+
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
7+
8+
## [Unreleased]
9+
10+
### Changed - v2 Images Only
11+
12+
- **BREAKING (Minor)**: v2 Debian images now built on **Debian Trixie** instead of Bookworm
13+
- Aligns with upstream PHP official image base OS migration
14+
- Provides access to newer system packages and security updates
15+
- **Backward Compatible**: `:bookworm` tags continue to work as aliases to Trixie-built images
16+
- **No Action Required** for most users - existing tags work transparently
17+
- v1 images remain on Debian Bookworm (no change)
18+
- See [Migration Guide](docs/migration.md#debian-trixie-migration-v2-only) for details
19+
20+
### Added
21+
22+
- Support for Debian Trixie base OS in v2 images
23+
- Automatic `:bookworm` tag aliasing for v2 Trixie-built images (backward compatibility)
24+
- Updated system libraries with time64 support (`t64` suffix packages)
25+
- Comprehensive migration documentation for Trixie base OS change
26+
27+
### Technical Details
28+
29+
- Updated `Dockerfile.v2` to handle both Trixie and Bookworm base OS values
30+
- Library updates for Trixie time64 transition:
31+
- `libpng16-16t64`, `libmagickwand-6.q16-7t64`, `libvips42t64`
32+
- `libavif16t64`, `libmemcached11t64`, `libsnmp40t64`
33+
- CI workflows updated to build v2 on Trixie matrix
34+
- Added `docker buildx imagetools create` step to publish bookworm compatibility tags
35+
36+
## Previous Releases
37+
38+
See git history for earlier changes.

README.md

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -19,13 +19,15 @@ See [v1 vs v2 comparison](#v1-vs-v2-comparison) below for details.
1919
- **Multi-Architecture Support**: Works on `amd64`, `arm64/aarch64` and `arm32v7/armhf` platforms
2020
- **Multiple PHP Versions**: PHP 8.2, 8.3, and 8.4 (actively built); PHP 7.x, 8.0, and 8.1 deprecated
2121
- **Multiple Server Types**: CLI, FPM, and Apache
22-
- **Base OS Options**: Alpine (lightweight) and Debian (Bookworm/Bullseye)
22+
- **Base OS Options**: Alpine (lightweight) and Debian (v1: Bookworm, v2: Trixie with Bookworm-compatible tags)
2323
- **Extensive Extensions**: 30+ PHP extensions pre-installed
2424
- **Latest Composer**: Always ships with the latest Composer version
2525
- **Image Processing Tools**: Includes ImageMagick, GD, and various image optimization utilities
2626
- **Apache Mods**: Includes Apache rewrite module (for Apache variants)
2727
- **v2: s6-overlay init**: Proper PID 1 and service supervision for reliable multi-process containers
2828

29+
> **ℹ️ Base OS Update (v2 only)**: v2 Debian images now use **Debian Trixie** as the base OS (following upstream PHP official images). For backward compatibility, `:bookworm` tags continue to work and point to the same Trixie-built images. v1 images remain on Bookworm. [See migration notes](docs/migration.md#debian-trixie-migration-v2-only) for details.
30+
2931
## Environment Variables
3032

3133
The following environment variables can be overridden when running containers:
@@ -137,14 +139,15 @@ We maintain **two image variants** to support both existing users and modern use
137139

138140
### v2 (Modern) - Tags with `-v2` suffix
139141

140-
**Purpose:** Modernized image with s6-overlay for proper init and service supervision.
142+
**Purpose:** Modernized image with s6-overlay for proper init and service supervision, built on latest Debian Trixie.
141143

142144
**Key Characteristics:**
143145

144146
- Uses [s6-overlay](https://github.com/just-containers/s6-overlay) as PID 1 init
145147
- Proper signal handling and zombie process reaping
146148
- Service supervision and restart policies
147149
- BuildKit-enabled for better build performance and caching
150+
- Built on Debian Trixie (`:trixie` tags) with `:bookworm` compatibility aliases
148151

149152
**Pros:**
150153

docs/migration.md

Lines changed: 111 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,115 @@
1-
# Migration Guide: v1 to v2
1+
# Migration Guide
22

3-
This guide helps you migrate from v1 (legacy) to v2 (modern) PHP Docker images.
3+
This guide helps you migrate between different versions of php-docker images.
4+
5+
## Debian Trixie Migration (v2 only)
6+
7+
**Effective Date:** October 2025
8+
**Affects:** v2 Debian images only (v1 remains on Bookworm)
9+
10+
### What Changed
11+
12+
v2 Debian-based images have migrated from **Debian Bookworm** to **Debian Trixie** to align with upstream PHP official images and provide access to newer system packages.
13+
14+
**Important:** For backward compatibility, `:bookworm` tags continue to work and now point to Trixie-built images. The same image digest is served whether you pull `:trixie` or `:bookworm` tags.
15+
16+
### Tag Mapping
17+
18+
All v2 Debian images now use Trixie as the base, with multiple compatible tags:
19+
20+
```bash
21+
# These all reference the SAME trixie-built image:
22+
kingpin/php-docker:8.3-fpm-trixie-v2 # Explicit trixie tag
23+
kingpin/php-docker:8.3-fpm-bookworm-v2 # Backward-compatible alias
24+
kingpin/php-docker:8.3-fpm-bullseye-v2 # Legacy compatibility alias
25+
```
26+
27+
### Why This Change?
28+
29+
1. **Upstream Alignment**: PHP official images moved to Trixie
30+
2. **Newer Packages**: Access to latest system libraries and security updates
31+
3. **Future-Proofing**: Trixie will become the next Debian stable release
32+
4. **Zero Disruption**: Bookworm tags work transparently
33+
34+
### Do I Need to Change Anything?
35+
36+
**Short answer: No, in most cases.**
37+
38+
If you're currently using:
39+
- `kingpin/php-docker:8.x-type-bookworm-v2`**No action required**. You'll automatically get Trixie-built images.
40+
- `kingpin/php-docker:8.x-type-alpine-v2`**No change**. Alpine images are unaffected.
41+
- v1 images (without `-v2`) → **No change**. v1 remains on Bookworm.
42+
43+
### When to Review Your Setup
44+
45+
**Review if you:**
46+
- Compile native extensions or link against system libraries in your application
47+
- Have strict compliance requirements for a specific Debian version
48+
- Use host-mounted volumes with binaries that depend on glibc versions
49+
- Pin specific package versions via `apt-get install` in your Dockerfile layers
50+
51+
**Testing checklist:**
52+
1. Verify PHP version: `docker run --rm IMAGE php -v`
53+
2. Check extensions load: `docker run --rm IMAGE php -m`
54+
3. Test your application's core functionality
55+
4. Run your test suite if available
56+
5. Check for any compiled extensions (e.g., custom C extensions)
57+
58+
### Library Changes in Trixie
59+
60+
Key system library updates (time64 transition):
61+
62+
| Library | Bookworm | Trixie |
63+
|---------|----------|--------|
64+
| libpng | `libpng16-16` | `libpng16-16t64` |
65+
| libmagickwand | `libmagickwand-6.q16-6` | `libmagickwand-6.q16-7t64` |
66+
| libvips | `libvips42` | `libvips42t64` |
67+
| libavif | `libavif15` | `libavif16t64` |
68+
| libmemcached | `libmemcached11` | `libmemcached11t64` |
69+
70+
> **Note:** The `t64` suffix indicates [time64](https://wiki.debian.org/ReleaseGoals/64bit-time) support for 32-bit architectures. This does not affect x86_64 or arm64 users.
71+
72+
### Rollback Plan
73+
74+
If you encounter issues:
75+
76+
1. **Pin to a legacy Bookworm digest** (if you have one saved):
77+
```bash
78+
# Use a specific digest from before the migration
79+
docker pull kingpin/php-docker@sha256:abc123...
80+
```
81+
82+
2. **Use v1 images** (still on Bookworm):
83+
```bash
84+
# v1 images remain on Debian Bookworm
85+
docker pull kingpin/php-docker:8.3-fpm-bookworm
86+
```
87+
88+
3. **Report the issue**:
89+
- Open an issue: https://github.com/kingpin/php-docker/issues
90+
- Include: PHP version, image tag, error logs, and reproduction steps
91+
92+
### FAQ
93+
94+
**Q: Will my existing containers break?**
95+
A: No. Existing running containers continue unchanged. New pulls get Trixie-built images.
96+
97+
**Q: Can I explicitly use Bookworm-built images?**
98+
A: Use v1 images (without `-v2` suffix), which remain on Bookworm.
99+
100+
**Q: What about Alpine images?**
101+
A: Alpine images are completely unaffected by this change.
102+
103+
**Q: Will Trixie images be larger?**
104+
A: Image sizes are comparable. CI tests show negligible differences (<5%).
105+
106+
**Q: Is this breaking my compliance requirements?**
107+
A: If you require certified Bookworm images, use v1. v2 is built on Trixie going forward.
108+
109+
**Q: When will v1 move to Trixie?**
110+
A: No current plans. v1 remains on Bookworm for maximum stability and compatibility.
111+
112+
---
4113

5114
> **ℹ️ Note on Deprecated Versions**: PHP 7.x and 8.1 are no longer actively built. If you're using these versions, please also review the [deprecated images guide](deprecated-images.md) for upgrade paths to PHP 8.2 or 8.3.
6115

0 commit comments

Comments
 (0)