Skip to content

Commit 6c2fbfb

Browse files
committed
Add mermaid diagram to README
1 parent 247c514 commit 6c2fbfb

2 files changed

Lines changed: 70 additions & 3 deletions

File tree

‎README.md‎

Lines changed: 69 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,37 @@ dependencies can instead be placed in separate or grouped layers so
1717
application-only changes retain the same dependency-layer digests for
1818
registry- and fleet-wide cache reuse.
1919

20+
## How it fits together
21+
22+
```mermaid
23+
flowchart
24+
binary["java_binary or scala_binary"]
25+
runtime["Runtime JARs<br/>JavaRuntimeClasspathInfo"]
26+
data["Binary runfiles<br/>and explicit data"]
27+
lock["Optional Maven lock file"]
28+
rule["jvm_jar_layers"]
29+
30+
binary --> runtime --> rule
31+
binary --> data --> rule
32+
lock -.->|artifact routing| rule
33+
34+
rule --> maven["Maven dependency layers<br/>/app/lib/*.jar"]
35+
rule --> fallback["Fallback layer<br/>app JARs + unmatched JARs"]
36+
rule --> runfiles["Data layer<br/>/app/&lt;repo&gt;/..."]
37+
rule --> classpath["/app/lib/classpath"]
38+
classpath --> fallback
39+
40+
base["Base JVM image"] --> image["OCI image rule"]
41+
maven --> image
42+
fallback --> image
43+
runfiles --> image
44+
45+
image --> output["OCI image"]
46+
output --> entrypoint["Entrypoint<br/>java -cp @/app/lib/classpath MainClass"]
47+
entrypoint -.->|loads intact JARs| maven
48+
entrypoint -.->|loads app and fallback JARs| fallback
49+
```
50+
2051
## Install
2152

2253
Until the module is published to a registry, add a pinned override to the
@@ -25,10 +56,13 @@ client's `MODULE.bazel`:
2556
```starlark
2657
bazel_dep(name = "jvm_image", version = "0.1.0")
2758

28-
git_override(
59+
archive_override(
2960
module_name = "jvm_image",
30-
commit = "<full-commit-sha>",
31-
remote = "https://github.com/stackb/jvm_image.git",
61+
integrity = "sha256-FcnG0wSlMCAIGnLykKyQIshz8jauYHi8KEdDX5nNG+A=",
62+
strip_prefix = "jvm_image-0.1.0",
63+
urls = [
64+
"https://github.com/stackb/jvm_image/releases/download/v0.1.0/jvm_image-v0.1.0.tar.gz",
65+
],
3266
)
3367
```
3468

@@ -83,6 +117,38 @@ runfiles layer under `/app`. Workspace files use
83117
the application uses Bazel's runfiles lookup conventions. Host JDK files,
84118
binary launchers, and runtime JARs are excluded from this data layer.
85119

120+
The `example/hello` oci_tarball has the following structure:
121+
122+
```
123+
--- sha256:c4fd6f20ece135d1caf7d46368138b7aa58603e775f01c24479912075ec8c490 ---
124+
Mode Size Name
125+
-rw-r--r-- 34 B app/_main/greeting.txt
126+
-rw-r--r-- 36 B app/_main/runtime/native.marker
127+
128+
--- sha256:19730c7f427ef030cf5b9eb1b610fc5d01855a9100e0ea08bdd5da06640fca7f ---
129+
-rw-r--r-- 1.2 kB app/lib/hello.jar
130+
-rw-r--r-- 2.3 kB app/lib/processed_listenablefuture-9999.0-empty-to-avoid-conflict-with-guava.jar
131+
-rw-r--r-- 364 B app/lib/classpath
132+
133+
--- sha256:3abdf128e65e2e1437f3ac7346c0e9fabdf3f9842a99cbcbef42207181b64065 ---
134+
-rw-r--r-- 21 kB app/lib/processed_jsr305-3.0.2.jar
135+
136+
--- sha256:1cbbdab98aee4c1ea5436f305f2cd68169443dfa4f0931becb4800d73371706f ---
137+
-rw-r--r-- 19 kB app/lib/processed_error_prone_annotations-2.36.0.jar
138+
139+
--- sha256:58c28ed69316ce659037cb1df9c51533878a956c5e8bbe3bca7be9ef5bb428f7 ---
140+
-rw-r--r-- 4.8 kB app/lib/processed_failureaccess-1.0.2.jar
141+
142+
--- sha256:a6ef98beaef5ab8b409ca6cec41b3d5be38804bcec418b3c3138cd470e5704e3 ---
143+
-rw-r--r-- 3.1 MB app/lib/processed_guava-33.4.0-jre.jar
144+
145+
--- sha256:8d650354e3037e3908f78628d47b637d0ec1922988c5f24a75b2a15626502c8b ---
146+
-rw-r--r-- 12 kB app/lib/processed_j2objc-annotations-3.0.0.jar
147+
148+
--- sha256:05fd8c687c7112da76548914db47d51d43f023ce2ac3cde4dc91c1a8aad92bd0 ---
149+
-rw-r--r-- 232 kB app/lib/processed_checker-qual-3.43.0.jar
150+
```
151+
86152
## Configuration notes
87153

88154
- `maven_lock_file` is optional. When omitted, every runtime JAR goes to the

‎example/hello/MODULE.bazel‎

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -57,6 +57,7 @@ pull = use_repo_rule("@rules_img//img:pull.bzl", "pull")
5757
pull(
5858
name = "distroless_java",
5959
digest = "sha256:4eadd00d3bff73e6a7491dd36653c1d318ac93fb1fb2cd5eef768fd2b4238408",
60+
layer_handling = "lazy",
6061
registry = "gcr.io",
6162
repository = "distroless/java25-debian13",
6263
tag = "nonroot",

0 commit comments

Comments
 (0)