|
1 | | -## Debian with AEM SDK |
| 1 | +## AEM SDK |
2 | 2 |
|
3 | | -[](https://github.com/aem-design/docker-aem/actions?query=workflow%3Abuild+branch%3Asdk-2023.1.10912) |
| 3 | +[](https://github.com/aem-design/docker-aem/actions?query=workflow%3Abuild+branch%3Asdk-2025.7.21644) |
4 | 4 | [](https://github.com/aem-design/aem) |
5 | 5 | [](https://github.com/aem-design/aem) |
6 | 6 | [](https://github.com/aem-design/aem) |
|
9 | 9 | [](https://hub.docker.com/r/aemdesign/aem) |
10 | 10 | [](https://github.com/aem-design/aem) |
11 | 11 |
|
12 | | -This is docker image based on CentOS 8 with Tini |
13 | | -One image that can be used for both Author and Publish nodes |
14 | | -No license is included, you will need to register when starting up |
| 12 | +Docker image based on [aemdesign/aem-base](https://hub.docker.com/r/aemdesign/aem-base/) with AEM SDK. |
| 13 | + |
| 14 | +One image that can be used for both Author and Publish nodes. No license is included, you will need to register when starting up. |
| 15 | + |
| 16 | +Docker image for linux/amd64 (also runs on Apple Silicon via Rosetta 2). |
| 17 | + |
| 18 | +## Docker Images |
| 19 | + |
| 20 | +Images are available on both registries: |
| 21 | +- **Docker Hub**: `aemdesign/aem` |
| 22 | +- **GitHub Container Registry**: `ghcr.io/aem-design/aem` |
| 23 | + |
| 24 | +### Tags |
| 25 | + |
| 26 | +- `latest` - Latest build from master branch |
| 27 | +- `sdk-2025.7.21644` - Current SDK version branch |
| 28 | +- Version tags (pushed when git tags are created) |
15 | 29 |
|
16 | 30 | ### AEM Version |
17 | 31 |
|
@@ -67,11 +81,104 @@ Following bundles are added to container |
67 | 81 |
|
68 | 82 | ### Starting |
69 | 83 |
|
70 | | -To start author run the following |
| 84 | +To start author run the following: |
| 85 | + |
| 86 | +```bash |
| 87 | +docker run --name author-sdk-2025-7-21644 -e "TZ=Australia/Sydney" -e "AEM_RUNMODE=-Dsling.run.modes=author,crx3,crx3tar,localdev" -e "AEM_JVM_OPTS=-server -Xms248m -Xmx1524m -XX:MaxDirectMemorySize=256M -XX:+CMSClassUnloadingEnabled -Djava.awt.headless=true -Dorg.apache.felix.http.host=0.0.0.0 -Xdebug -Xrunjdwp:transport=dt_socket,server=y,address=58242,suspend=n -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" -p4502:8080 -p30303:58242 -d aemdesign/aem:sdk-2025.7.21644 |
| 88 | +``` |
| 89 | + |
| 90 | +## Development |
| 91 | + |
| 92 | +### CI/CD Pipeline |
| 93 | + |
| 94 | +The project uses GitHub Actions for continuous integration and deployment: |
| 95 | + |
| 96 | +- **Platform**: Images are built for `linux/amd64` |
| 97 | +- **Apple Silicon support**: Works seamlessly on M1/M2/M3/M4 Macs via Docker Desktop's Rosetta 2 emulation |
| 98 | +- **Automated testing**: Java version is verified before pushing |
| 99 | +- **Image analysis**: Uses `dive` for Docker image layer analysis |
| 100 | +- **Dual registry push**: Automatically pushes to Docker Hub and GitHub Container Registry |
| 101 | +- **Git tag versioning**: Pushing a git tag automatically creates a corresponding Docker image tag |
| 102 | + |
| 103 | +### Running on Apple Silicon Macs (M1/M2/M3/M4) |
| 104 | + |
| 105 | +This image is built for `linux/amd64` architecture but runs seamlessly on Apple Silicon Macs through **Rosetta 2** emulation in Docker Desktop. |
| 106 | + |
| 107 | +#### Prerequisites |
| 108 | + |
| 109 | +1. **Docker Desktop for Mac** (version 4.25.0 or later recommended) |
| 110 | + - Download from: https://www.docker.com/products/docker-desktop |
| 111 | + |
| 112 | +2. **Rosetta 2** (usually already installed on modern macOS) |
| 113 | + - To verify/install: `softwareupdate --install-rosetta` |
| 114 | + |
| 115 | +#### Enable Rosetta 2 in Docker Desktop |
| 116 | + |
| 117 | +1. Open **Docker Desktop** |
| 118 | +2. Go to **Settings** (⚙️ icon) → **General** |
| 119 | +3. Enable **"Use Rosetta for x86_64/amd64 emulation on Apple Silicon"** |
| 120 | +4. Click **Apply & Restart** |
| 121 | + |
| 122 | + |
| 123 | + |
| 124 | +#### Verify It's Working |
| 125 | + |
| 126 | +```bash |
| 127 | +# Pull and run the image |
| 128 | +docker pull aemdesign/aem:latest |
| 129 | +docker run --rm aemdesign/aem:latest uname -m |
| 130 | + |
| 131 | +# Expected output: x86_64 (running via Rosetta 2) |
| 132 | +``` |
| 133 | + |
| 134 | +#### Performance Notes |
| 135 | + |
| 136 | +- **Rosetta 2 emulation** provides near-native performance for most workloads |
| 137 | +- First container start may be slightly slower (Rosetta translation cache warmup) |
| 138 | +- Subsequent starts are fast |
| 139 | +- **No code changes needed** - everything works transparently |
| 140 | + |
| 141 | +### Monitoring Pipeline Status |
| 142 | + |
| 143 | +Use the `get-action-logs.ps1` PowerShell script to monitor GitHub Actions workflow status and logs. |
| 144 | + |
| 145 | +#### Prerequisites |
| 146 | + |
| 147 | +- GitHub CLI (`gh`) must be installed and authenticated |
| 148 | +- Install: `winget install --id GitHub.cli` |
| 149 | +- Authenticate: `gh auth login` |
| 150 | + |
| 151 | +#### Quick Start |
| 152 | + |
| 153 | +```powershell |
| 154 | +# Check current commit's pipeline status (saves logs to logs/ folder by default) |
| 155 | +.\get-action-logs.ps1 |
| 156 | +
|
| 157 | +# Wait for pipeline to complete |
| 158 | +.\get-action-logs.ps1 -WaitForCompletion |
| 159 | +
|
| 160 | +# Show logs in console |
| 161 | +.\get-action-logs.ps1 -ShowLogs |
| 162 | +
|
| 163 | +# Force re-download logs |
| 164 | +.\get-action-logs.ps1 -Force |
| 165 | +``` |
| 166 | + |
| 167 | +See full documentation: `Get-Help .\get-action-logs.ps1 -Full` |
| 168 | + |
| 169 | +### Creating a New Release |
71 | 170 |
|
72 | 171 | ```bash |
73 | | -docker run --name author-sdk-2023-1-10912 -e "TZ=Australia/Sydney" -e "AEM_RUNMODE=-Dsling.run.modes=author,crx3,crx3tar,localdev" -e "AEM_JVM_OPTS=-server -Xms248m -Xmx1524m -XX:MaxDirectMemorySize=256M -XX:+CMSClassUnloadingEnabled -Djava.awt.headless=true -Dorg.apache.felix.http.host=0.0.0.0 -Xdebug -Xrunjdwp:transport=dt_socket,server=y,address=58242,suspend=n -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" -p4502:8080 -p30303:58242 -d aemdesign/aem:sdk-2022.4.7138 |
74 | | -``` |
| 172 | +# Tag the commit |
| 173 | +git tag sdk-2025.7.21644-v1 |
| 174 | +git push origin sdk-2025.7.21644-v1 |
| 175 | +``` |
| 176 | + |
| 177 | +This will automatically build and push versioned Docker images to both registries. |
| 178 | + |
| 179 | +## License |
| 180 | + |
| 181 | +See [LICENSE](LICENSE) file for details. |
75 | 182 |
|
76 | 183 |
|
77 | 184 |
|
0 commit comments