Skip to content

Conversation

mnapoli
Copy link
Member

@mnapoli mnapoli commented May 24, 2025

This PR will contain all changes for Bref v3.

This PR goes hand-in-hand with brefphp/bref#1953

This will be a long-running PR, I like to keep this open for months so that we have a place to preview and discuss changes. I do not intend to merge this pull request soon.

Layers for v3 are published to a different AWS account than v2, to avoid conflict. That means we can start using v3 layers as soon as these are published (working on it).

Changes:


Layer sizes

PHP 8.4

  • v2: 69MB
    • PHP binary: 22MB × 2
    • libs: no libicu
  • v3: 53MB
    • PHP binary: 20MB × 2
    • libs: no libicu
  • v3 AL2023: 79MB
    • PHP binary: 20MB × 2
    • libs: libicu 32MB

PHP 8.3

  • v2: 65MB
    • PHP binary: 18MB × 2
    • libs: no libicu
  • v3: 46MB
    • PHP binary: 16MB × 2
    • libs: no libicu
  • v3 AL2023: 72MB
    • PHP binary: 16MB × 2
    • libs: libicu 32MB

mnapoli added 6 commits May 3, 2024 11:16
# Conflicts:
#	php-83/Dockerfile
#	tests/test_2_extensions.php
#	utils/lib-copy/libs-arm.txt
#	utils/lib-copy/libs-x86.txt
@mnapoli mnapoli marked this pull request as draft May 24, 2025 20:21
* Refactor to a single layer

* Fix

* Fixes

* Finish merging php.ini files

* Update the PHP 8.2 and 8.3 build scripts too
@mnapoli mnapoli mentioned this pull request May 24, 2025
2 tasks
mnapoli added 17 commits May 25, 2025 10:55
* Optimize layer sizes

The goal is to reduce layer sizes to optimize cold starts (that's the theory at least).

- `strip` debug symbols for all libraries and PHP extensions (saves 11.7%)
- compile PHP with the `-Os` C/CPP flag to optimize the binary for size (saves 8%)
- compile libraries with the `-Os` flag (saves 6.3%)
- disable the `soap` extension by default to avoid loading it on PHP startup (the only big unpopular extension I could find)
- bundle the `pdo-mysql` extension in the PHP binary: it is extra small and will avoid loading it through an external file (small optimization)

In total that's a 24% size reduction, i.e. 14.6MB.

This is for Bref v3, I will run some benchmarks as just measuring the layer size doesn't tell us the full story about cold starts.

* Fix tests
# Conflicts:
#	layers/fpm-dev/Dockerfile
#	php-80/Dockerfile
#	php-81/Dockerfile
# Conflicts:
#	Makefile
#	php-80/Dockerfile
#	php-81/Dockerfile
# Conflicts:
#	php-83/Dockerfile
That will help know which versions are installed in Bref, and decide which ones to compile or not.
Switch to Amazon Linux 2023 for Bref v3
(cherry picked from commit 12685d1)
@mnapoli mnapoli marked this pull request as ready for review August 20, 2025 18:53
@mnapoli mnapoli marked this pull request as draft August 20, 2025 18:53
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants