feat(deploy): in-container build Dockerfiles — build the image without a host JDK
Maintainers usually reply within 1 day
Nobody has claimed this yet.
Assessment
- Difficulty
- 3/5
- Estimated time
- 1-2 days
- Newbie friendliness
- 42/100
Research direction
Start with the existing Dockerfile(s) at the repository root to see the current runtime stage layout, then check the README quickstart and the CI workflow that builds images. Add Dockerfile.jvm-build and Dockerfile.native-build as multi-stage files whose first stage builds the app with Maven and a JDK or Mandrel/GraalVM image, reusing a Maven cache mount. Done when both images build from a clean host with only Docker installed and CI builds them on release tags.
Written by the indexing model from the issue text.
Description
Problem Statement
Building the container today requires a host toolchain (JDK 21+, Maven, and GraalVM for the native image) before docker build can run. For the self-hosting audience — the project's core audience — that's real onboarding friction: "install Java to build the Docker image" defeats part of the point of shipping a container.
Proposed Solution
Add multi-stage, in-container build Dockerfiles so docker build is the only prerequisite:
Dockerfile.jvm-build— stage 1 builds with a Maven+JDK image, stage 2 is the existing runtime layout.Dockerfile.native-build— stage 1 builds the native image with a Mandrel/GraalVM builder image, stage 2 the existing micro base.- Layer-cache the Maven repository (
--mount=type=cache) so rebuilds are fast. - Document both in the README quickstart as the zero-toolchain path; keep the current host-build Dockerfiles for CI/dev speed.
- CI builds the in-container variants at least on release tags so they can't rot.
Pairs with #318 (try-before-self-host onboarding): both lower the "first successful deploy" bar.
Alternatives Considered
- Publish pre-built images only — necessary but not sufficient; self-hosters patching or pinning forks still need a no-toolchain build path.
- Devcontainer — helps contributors, not deployers.
Priority
Nice to have
- Dominant language
- Java
- Stars
- 35
- Forks
- 7
- Avg merge
- 9h 23m
- Merged PRs (30d)
- 154
Getting set up
- Ships a Dockerfile or Docker Compose file
- Has a pull request template
- Read the contributing guide
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- Open a pull request that references the issue number.
More from devops-thiago/ThrillhouseBot
-
bug
Difficulty 2/5 1-3 hours Newbie friendliness 72/100
devops-thiago/ThrillhouseBot#1093 ·
Maintainers usually reply within 1 day
-
documentation enhancement
Difficulty 2/5 1-3 hours Newbie friendliness 68/100
devops-thiago/ThrillhouseBot#321 ·
Maintainers usually reply within 1 day
-
documentation
Difficulty 2/5 1-3 hours Newbie friendliness 72/100
devops-thiago/ThrillhouseBot#46 ·
Maintainers usually reply within 1 day
-
bug
Difficulty 3/5 1-2 days Newbie friendliness 58/100
devops-thiago/ThrillhouseBot#1095 ·
Maintainers usually reply within 1 day
-
bug
Difficulty 4/5 3-5 days Newbie friendliness 58/100
devops-thiago/ThrillhouseBot#1094 ·
Maintainers usually reply within 1 day
All issues in devops-thiago/ThrillhouseBot
Similar issues
-
Status: Pending Review Type: Feature Request
Difficulty 1/5 Under an hour Newbie friendliness 82/100
OpenRefine/OpenRefine#8019 ·
Maintainers usually reply within 1 day
-
`timer` rule rejects dates the engine acceptsPossibly taken @MFA-G claimed this today. Openbug ready
Difficulty 2/5 1-3 hours Newbie friendliness 72/100
camunda/bpmnlint-plugin-camunda-compat#281 · 3 comments ·
Maintainers usually reply within 1 day
-
status: waiting-for-triage
Difficulty 2/5 1-3 hours Newbie friendliness 72/100
-
bug
Difficulty 2/5 1-3 hours Newbie friendliness 62/100
-
Difficulty 2/5 1-3 hours Newbie friendliness 74/100
Maintainers usually reply within 1 day