Skip to content

chore(docker): migrate from Docker Hub to GitHub Container Registry#308

Merged
Goldziher merged 5 commits intomainfrom
chore/migrate-docker-registry-to-ghcr
Jan 17, 2026
Merged

chore(docker): migrate from Docker Hub to GitHub Container Registry#308
Goldziher merged 5 commits intomainfrom
chore/migrate-docker-registry-to-ghcr

Conversation

@Goldziher
Copy link
Collaborator

Summary

Migrates all Docker images from Docker Hub (goldziher/kreuzberg) to GitHub Container Registry (ghcr.io/kreuzberg-dev/kreuzberg).

Changes

GitHub Actions & CI

  • Updated .github/workflows/publish-docker.yaml to publish to ghcr.io
  • Changed authentication from Docker Hub credentials to GitHub Container Registry (uses GITHUB_TOKEN)
  • Added packages: read permission to check-docker job
  • Added login step for authenticated manifest inspection

Dockerfiles

  • Added OCI labels to docker/Dockerfile.core and docker/Dockerfile.full
    • org.opencontainers.image.source
    • org.opencontainers.image.description
    • org.opencontainers.image.licenses

Documentation (40+ files)

  • Updated all references from goldziher/kreuzberg to ghcr.io/kreuzberg-dev/kreuzberg
  • Fixed variant tag consistency (core uses -core suffix)
  • Updated build snippets to use local tags for development
  • Updated main Docker guide (docs/guides/docker.md)
  • Updated 9 snippet files in docs/snippets/
  • Updated mkdocs.yaml to link to GitHub Container Registry
  • Updated docker/README.md

READMEs & Badges

  • Added Docker badge to root README.md
  • Updated badge template in scripts/readme_templates/partials/badges.html.jinja
  • Regenerated all 9 package READMEs with new Docker badge
  • Badge placement: After language bindings, before Project Info section

Test Files

  • Updated tests/test_apps/docker/docker-compose.yml with correct variant tags
  • Updated test documentation to use local tags

Changelog

  • Added entry documenting the migration

New Image Locations

Production (GitHub Container Registry):

  • Core variant: ghcr.io/kreuzberg-dev/kreuzberg:VERSION-core or :core
  • Full variant: ghcr.io/kreuzberg-dev/kreuzberg:VERSION or :latest

Local Development:

  • Core: kreuzberg:core
  • Full: kreuzberg:full

Multi-Architecture Support

Both images support:

  • linux/amd64 (x86_64)
  • linux/arm64 (aarch64)

Post-Merge Steps

After the first successful image publish:

  1. Navigate to https://github.com/kreuzberg-dev/kreuzberg/packages
  2. Change package visibility to Public
  3. Verify package is linked to repository (OCI labels should auto-link)

Breaking Changes

⚠️ Users must update their Docker pull/run commands:

  • Old: docker pull goldziher/kreuzberg:latest
  • New: docker pull ghcr.io/kreuzberg-dev/kreuzberg:latest

All images remain publicly accessible without authentication required.

Testing

  • ✅ All documentation files updated and verified
  • ✅ Badge placement consistent across all READMEs
  • ✅ Variant tags corrected (core vs full)
  • ✅ Build snippets use local tags
  • ✅ Pre-commit hooks passed
  • ⏳ Will test actual publishing in next release

🤖 Generated with Claude Code

Fixed missing _internal_bindings.pyi in Python wheels that broke IDE
type completions. Added .pyi file to Maturin include configuration and
removed redundant MANIFEST.in since Maturin uses pyproject.toml.

Also fixed Homebrew bottle checksum mismatches by updating formula
script to download bottles from GitHub Release and compute checksums
from actual uploaded files instead of local artifacts.

Fixes #298
C# Serialization Fix:
- Changed HtmlConversionOptions to serialize as empty object {} instead of null
- Rust FFI expects html_options to be an object, not null value
- Resolves 145 test failures with "html_options must be an object" error

Ruby Cache Cleanup Fix:
- Added cleanup of packages/ruby/tmp/ directory to prevent stale Cargo fingerprints
- Applied to both build-ruby-gem and test-ruby jobs
- Prevents rb_sys compilation failures due to fingerprint mismatches

Updates CHANGELOG.md with both fixes in [Unreleased] section.
…ples

Remove non-existent EmbeddingModelType::preset() calls and use direct string preset
names instead. PHP EmbeddingConfig only supports preset names ('fast', 'balanced',
'quality', 'multilingual') as direct string values, not enum-based constructors.

Custom ONNX models are not yet supported in the PHP bindings - they return an error
at runtime. Model names are case-sensitive and must match exactly.

Fixed files:
- docs/snippets/php/utils/chunking.php
- docs/snippets/php/utils/chunking_rag.php
- docs/snippets/php/utils/embedding_with_chunking.php
- docs/snippets/php/utils/vector_database_integration.php
Fixed 4 failing Elixir tests on Windows by properly configuring Tesseract OCR
installation and environment variables.

Changes:
- Enhanced install-windows.ps1 with Tesseract post-install configuration
- Added comprehensive verification and logging showing exact Tesseract paths
- Set TESSDATA_PREFIX environment variable automatically
- Updated cache key to include tessdata files
- Added fallback logic to search common Tesseract installation paths

The script now:
1. Verifies Tesseract installation at C:\Program Files\Tesseract-OCR
2. Creates tessdata directory if missing
3. Lists all available language files (eng.traineddata, etc.)
4. Sets TESSDATA_PREFIX to persist across GitHub Actions steps
5. Provides detailed diagnostic output for debugging

This fixes the "Failed to initialize language 'eng'" errors in:
- test/unit/images_test.exs:478
- test/unit/tables_test.exs:806
- test/e2e/pdf_extraction_test.exs:63
- test/e2e/pdf_extraction_test.exs:121
Migrate all Docker images from Docker Hub (goldziher/kreuzberg) to
GitHub Container Registry (ghcr.io/kreuzberg-dev/kreuzberg).

Changes:
- Updated GitHub Actions workflow to publish to ghcr.io
- Changed authentication from Docker Hub to GitHub Container Registry
- Added OCI labels to Dockerfiles for better metadata
- Updated all documentation (40+ files) with new image locations
- Added Docker badge to all READMEs (root + 9 language packages)
- Fixed core/full variant tags for consistency
- Updated test configurations and examples

New image locations:
- Core: ghcr.io/kreuzberg-dev/kreuzberg:VERSION-core or :core
- Full: ghcr.io/kreuzberg-dev/kreuzberg:VERSION or :latest

Local development builds use local tags (kreuzberg:core, kreuzberg:full)

All images remain publicly accessible with multi-arch support
(linux/amd64, linux/arm64).
@Goldziher Goldziher merged commit 14c89bf into main Jan 17, 2026
52 of 57 checks passed
@Goldziher Goldziher deleted the chore/migrate-docker-registry-to-ghcr branch January 17, 2026 12:43
Goldziher added a commit that referenced this pull request Feb 13, 2026
…try-to-ghcr

chore(docker): migrate from Docker Hub to GitHub Container Registry
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