Skip to content

Commit da66bdb

Browse files
committed
Align sdk image and docs with jdk21 chain
1 parent c6e2bec commit da66bdb

6 files changed

Lines changed: 99 additions & 9 deletions

File tree

DEPENDENCY-CHAIN.md

Lines changed: 91 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,91 @@
1+
# Docker Dependency Chain and Update Process
2+
3+
This document describes how `docker-aem` depends on upstream images and how to safely roll updates through the chain.
4+
5+
## Chain Overview
6+
7+
Release order (bottom to top):
8+
9+
1. `aemdesign/oracle-jdk:jdk21`
10+
2. `aemdesign/java-ffmpeg:jdk21`
11+
3. `aemdesign/aem-base:jdk21`
12+
4. `aemdesign/aem:sdk-<sdk-version>`
13+
14+
`docker-aem` is the final SDK image in this chain.
15+
16+
## Current Dependency Map
17+
18+
1. `docker-oracle-jdk`
19+
- Builds Oracle JDK runtime image.
20+
2. `docker-java-ffmpeg`
21+
- `FROM aemdesign/oracle-jdk:jdk21`
22+
- Adds ffmpeg and media libraries.
23+
3. `docker-aem-base`
24+
- `FROM aemdesign/java-ffmpeg:jdk21`
25+
- Adds AEM Forms/system libraries.
26+
4. `docker-aem`
27+
- `FROM aemdesign/aem-base:jdk21`
28+
- Adds AEM SDK quickstart and startup config.
29+
30+
## Update Strategy
31+
32+
Always update and release in chain order.
33+
34+
1. Update `docker-oracle-jdk` and publish `jdk21`.
35+
2. Update `docker-java-ffmpeg` to consume latest `oracle-jdk:jdk21`, then publish `jdk21`.
36+
3. Update `docker-aem-base` to consume latest `java-ffmpeg:jdk21`, then publish `jdk21`.
37+
4. Update `docker-aem` for new SDK branch/version and publish `sdk-<sdk-version>`.
38+
39+
Do not skip levels. Each level should build and pass tests before moving to the next.
40+
41+
## Branch and Tag Conventions
42+
43+
1. Runtime/base branches:
44+
- `jdk21` for `docker-oracle-jdk`, `docker-java-ffmpeg`, `docker-aem-base`.
45+
2. AEM SDK branch:
46+
- `sdk-<sdk-version>` for `docker-aem` (example: `sdk-2026.2.24464`).
47+
3. Release tags:
48+
- Runtime/base: semantic tag or release tag used by that repo.
49+
- AEM SDK: `sdk-<sdk-version>` tag.
50+
51+
## Standard Update Checklist
52+
53+
For each repo in the chain:
54+
55+
1. Update `Dockerfile` base image reference and Java verification labels.
56+
2. Update CI workflow:
57+
- Ensure build step has `id: docker_build` if dive step uses `steps.docker_build.outputs.imageid`.
58+
- Ensure test step is enabled and validates Java version.
59+
3. Update local scripts (`build.ps1`, `debug.ps1`) default tags.
60+
4. Update README badge/branch/tag text.
61+
5. Run local smoke checks:
62+
- `docker build ...`
63+
- `test/run_tests.sh ...`
64+
6. Push branch and wait for GitHub Actions green.
65+
7. Create and push release tag.
66+
8. Confirm image exists in Docker Hub and GHCR.
67+
68+
## `docker-aem` Specific Notes
69+
70+
1. SDK quickstart comes from Google Drive secret (`GOOGLE_DRIVEID_AEM` in workflow).
71+
2. CIF and Forms packages are optional and handled in separate branches.
72+
3. Base SDK branch should not require CIF/Forms package downloads.
73+
4. Full SDK release runbook is in `RELEASE.md`.
74+
75+
## Verification Commands
76+
77+
Example checks after publishing:
78+
79+
```bash
80+
docker pull aemdesign/oracle-jdk:jdk21
81+
docker pull aemdesign/java-ffmpeg:jdk21
82+
docker pull aemdesign/aem-base:jdk21
83+
docker pull aemdesign/aem:sdk-<sdk-version>
84+
```
85+
86+
```bash
87+
docker run --rm aemdesign/oracle-jdk:jdk21 java --version
88+
docker run --rm aemdesign/java-ffmpeg:jdk21 java --version
89+
docker run --rm aemdesign/aem-base:jdk21 java --version
90+
docker run --rm aemdesign/aem:sdk-<sdk-version> java --version
91+
```

Dockerfile

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,16 +1,16 @@
1-
FROM aemdesign/aem-base:jdk17
1+
FROM aemdesign/aem-base:jdk21
22

33
ARG DOCKER_IMAGE_VERSION
44

55
MAINTAINER devops <devops@aem.design>
66

77
LABEL os="debian" \
8-
java="oracle 17" \
8+
java="oracle 21" \
99
container.description="aem instance, will run as author unless specified otherwise" \
1010
version="${DOCKER_IMAGE_VERSION}" \
1111
imagename="aem" \
1212
test.command="java --version" \
13-
test.command.verify="17."
13+
test.command.verify="21."
1414

1515
ARG AEM_JVM_OPTS="-server -Xms1024m -Xmx1024m -XX:MaxDirectMemorySize=256M -XX:+CMSClassUnloadingEnabled -Djava.awt.headless=true -Dorg.apache.felix.http.host=0.0.0.0"
1616
ARG AEM_JVM_OPTS="${AEM_JVM_OPTS} -XX:+UseParallelGC --add-opens=java.desktop/com.sun.imageio.plugins.jpeg=ALL-UNNAMED --add-opens=java.base/sun.net.www.protocol.jrt=ALL-UNNAMED --add-opens=java.naming/javax.naming.spi=ALL-UNNAMED --add-opens=java.xml/com.sun.org.apache.xerces.internal.dom=ALL-UNNAMED --add-opens=java.base/java.lang=ALL-UNNAMED --add-opens=java.base/jdk.internal.loader=ALL-UNNAMED --add-opens=java.base/java.net=ALL-UNNAMED -Dnashorn.args=--no-deprecation-warning"

README.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -169,6 +169,7 @@ See full documentation: `Get-Help .\get-action-logs.ps1 -Full`
169169
### Creating a New Release
170170

171171
See [RELEASE.md](RELEASE.md) for the full release runbook.
172+
See [DEPENDENCY-CHAIN.md](DEPENDENCY-CHAIN.md) for cross-repository dependency and update order.
172173

173174
Quick tag example:
174175

@@ -183,4 +184,3 @@ Tag push automatically builds and publishes versioned Docker images to both regi
183184

184185
See [LICENSE](LICENSE) file for details.
185186

186-

build.ps1

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@ Param(
22
[string]$LOG_PATH = "${PWD}\logs",
33
[string]$LOG_PEFIX = "docker",
44
[string]$LOG_SUFFIX = ".log",
5-
[string]$TAG = "jdk17",
5+
[string]$TAG = "sdk-2026.2.24464",
66
[string]$NAME = "aemsdk",
77
[string]$FILE = "Dockerfile",
88
[string]$GOOGLE_DRIVEID_AEM = "",
@@ -21,4 +21,3 @@ printSectionLine "$COMMAND" "warn"
2121

2222
Invoke-Expression -Command "$COMMAND" | Tee-Object -Append -FilePath "${LOG_FILE}"
2323

24-

docker-compose.yml

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -5,8 +5,8 @@ services:
55
build: .
66
labels:
77
aem.version: "sdk"
8-
os.version: "centos 8"
9-
java.version: "oracle 11"
8+
os.version: "debian"
9+
java.version: "oracle 21"
1010
container.description: "aem instance, will run as author unless specified otherwise"
1111
hostname: author
1212
container_name: "authorsdk"

test/run_tests.sh

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -95,7 +95,7 @@ printDebug() {
9595

9696
test_usage_java() {
9797
printLine "Testing java"
98-
CHECK="17."
98+
CHECK="21."
9999

100100
printLine "Starting Container"
101101

0 commit comments

Comments
 (0)