Skip to content

Docker Hub page is empty — publish the repo README, and add a short note on tag pinning #9

Description

@MichaelLeeHobbs

The Docker Hub page for openintegrationengine/engine has no description — it's a blank page under the
tag list. Meanwhile this repo already has a genuinely good README (quick reference, supported images,
env vars, secrets, volumes). It just never makes it to Hub, so the ~3k people who land there see nothing.

Mostly plumbing, plus a couple of small things I noticed while reading it. Happy to send a PR for any or
all of this if it's welcome.

1. Publish the README to Docker Hub

deploy-image.yaml already does a docker/login-action with DOCKERHUB_USERNAME, so the credentials
are in place — it's a step at the end of the job:

- name: Sync Docker Hub description
  uses: peter-evans/dockerhub-description@v4
  with:
    username: ${{ vars.DOCKERHUB_USERNAME }}
    password: ${{ secrets.DOCKERHUB_TOKEN }}   # needs a password/PAT with write perms
    repository: openintegrationengine/engine
    readme-filepath: ./README.md

2. Small accuracy fix in "Supported Images"

The section still maps the latest* tags to 4.5.2-tp.1-*, but real 4.5.2-* tags are published now,
so the list is a release behind.

3. Say what the variants mean

There are 19 tags across {version} × {alpine|ubuntu} × {|-jre|-jdk}, and the README lists them without
saying how to choose. A line each would go a long way — roughly: -jre is the runtime-only image most
people want; -jdk is there if you need a compiler in the container; alpine is much smaller with a
smaller package surface, ubuntu is the conservative glibc choice if you run native/JNI extensions.

(I don't want to overstate the alpine-vs-ubuntu tradeoff — you'd know it better than I would. The point
is just that today a user has no basis at all to pick.)

4. A short "pinning" note for production

Two things make this worth calling out explicitly:

  • There's no bare 4.5.2 tag. docker pull openintegrationengine/engine:4.5.2 fails with
    manifest unknown — you have to know to write 4.5.2-alpine or 4.5.2-ubuntu. So the natural way to
    follow "pin to a version" doesn't work, and people quietly fall back to latest, which does. If a bare
    4.5.2 alias is cheap to publish, that alone would fix most of it.
  • Extensions are gated on an exact engine version. Anyone running latest with any plugin installed
    will have their extensions stop loading the moment the tag rolls to the next release. For an integration
    engine that's a rough surprise, and it's not written down anywhere.

Something as small as: "latest is convenient for evaluation. For production, pin an explicit version
(or a digest) — extensions are tied to an exact engine version and will not load after latest moves."

Worth noting your own Dockerfile already pins its base images (ubuntu:noble-20251013,
eclipse-temurin:21.0.9_10-jre-alpine) — this is just extending the same courtesy to downstream users.


Thanks for the image work — the tag matrix and multi-arch support are genuinely nice to have.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Fields

    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions