Skip to content

chore: promote dev to main (top-down dep tree sweep)#1

Merged
Snider merged 18 commits into
mainfrom
dev
Apr 30, 2026
Merged

chore: promote dev to main (top-down dep tree sweep)#1
Snider merged 18 commits into
mainfrom
dev

Conversation

@Snider
Copy link
Copy Markdown
Contributor

@Snider Snider commented Apr 30, 2026

Routine dev→main promotion as part of cross-repo top-down dep tree sweep so module-tidy can resolve current versions across consumers.

Snider and others added 18 commits January 31, 2026 21:41
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
Publishes container images to both registries:
- GHCR: ghcr.io/host-uk/core-images:{image} (org access)
- Docker Hub: lthn/{image}:{version} (public distribution)

Changes:
- Add Docker Hub login step (requires DOCKERHUB_USERNAME, DOCKERHUB_TOKEN secrets)
- Update metadata to generate tags for both registries
- Enable dev branch builds
- Fix LinuxKit build to use linuxkit directly (not core CLI)
- Use correct double-dash flags for linuxkit

Naming:
- developer -> ghcr.io/host-uk/core-images:developer + lthn/core-dev:latest
- server-php -> ghcr.io/host-uk/core-images:server-php + lthn/server-php:latest

Closes #1

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
server-php:
- Add nginx.conf, fpm-pool.conf.template, supervisord.conf
- Add php.ini.template, php-prod.ini, php-dev.ini
- Add opcache-prod.ini, xdebug.ini
- Add nginx-performance.conf for production
- Add entrypoint.sh script

developer:
- Remove git-delta (not available in Alpine 3.22 repos)

Closes #3

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
The builder stage copies patch/ to allow overriding vendor files.
For the base image this is empty with a README explaining usage.

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
The Dockerfile requires product/ directory for the builder stage.
For the base image, this is a minimal placeholder that returns JSON.
Applications should mount their own code at /var/www/html.

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- Use separate image repos (ghcr.io/host-uk/core-dev, server-php)
- Trigger on dev branch instead of main
- Only build LinuxKit on tags
- Add fail-fast: false to continue if one image fails

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- Dev branch: GHCR only (ghcr.io/host-uk/*)
- Main branch + tags: GHCR + Docker Hub (lthn/*)
- Requires DOCKERHUB_USERNAME and DOCKERHUB_TOKEN secrets

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
phpdocumentor/phpdocumentor doesn't support PHP 8.4 yet, causing
the composer global require to fail during image build.

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
Composer blocks plugins by default for security. Need to explicitly
allow pest-plugin before running composer global require.

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
gopls@latest requires Go 1.25, scc/v3@latest requires Go 1.25.2.
Pin to known-working versions for Alpine's Go 1.24.

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
Several Go tools require newer Go versions than Alpine 3.22 provides.
Add || true to all go install commands to allow build to continue
if individual tools fail.

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- Terraform: install from HashiCorp binary (not in Alpine 3.22)
- lazydocker, ctop, mkcert, dasel, sops, trivy, trufflehog, k6:
  pin to specific versions with correct URL patterns
- All binary downloads now optional with || true fallback

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- Add Python 3.13 via multi-stage build from official Alpine image
- Pin Claude Code CLI to version 2.1.29
- Update image description to reflect all four languages

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- PHP 8.5.3 (was 8.4 on Alpine — Codex sandbox was failing)
- Debian Trixie base (Alpine stays for server-php/Blesta only)
- Multi-stage scratch exports: php, golang, node, python stages
  can be COPY --from'd independently by downstream images
- All PHP extensions clean: sockets, pcntl, sodium, opcache,
  imagick, xsl, redis, gd, intl, bcmath
- Go 1.26.1, Node 22, Python 3.13, Composer 2.9
- Image size: 2.9GB (was 6GB on Alpine)
- FrankenPHP static binary included

Co-Authored-By: Virgil <virgil@lethean.io>
@Snider Snider merged commit fba8e1f into main Apr 30, 2026
2 of 4 checks passed
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.

1 participant