|
1 | | -## Debian with AEM |
| 1 | +## AEM Base |
2 | 2 |
|
3 | 3 | [](https://github.com/aem-design/docker-aem-base/actions/workflows/build.yml) |
4 | 4 | [](https://github.com/aem-design/aem-base) |
|
9 | 9 | [](https://hub.docker.com/r/aemdesign/aem-base) |
10 | 10 | [](https://github.com/aem-design/aem-base) |
11 | 11 |
|
12 | | -This is docker image based on [aemdesign/java-ffmpeg](https://hub.docker.com/r/aemdesign/java-ffmpeg/) with AEM base libs |
| 12 | +Docker image based on [aemdesign/java-ffmpeg](https://hub.docker.com/r/aemdesign/java-ffmpeg/) with AEM base libraries for Forms processing. |
| 13 | + |
| 14 | +Docker image for linux/amd64 (also runs on Apple Silicon via Rosetta 2). |
| 15 | + |
| 16 | +## Docker Images |
| 17 | + |
| 18 | +Images are available on both registries: |
| 19 | +- **Docker Hub**: `aemdesign/aem-base` |
| 20 | +- **GitHub Container Registry**: `ghcr.io/aem-design/aem-base` |
| 21 | + |
| 22 | +### Tags |
| 23 | + |
| 24 | +- `latest` - Latest build from main branch |
| 25 | +- `jdk17` - JDK 17 branch |
| 26 | +- Version tags (pushed when git tags are created) |
13 | 27 |
|
14 | 28 | ### Included Packages |
15 | 29 |
|
16 | | -Following is the list of packages included |
| 30 | +* **AEM Forms libraries** - Required libraries for AEM Forms processing |
| 31 | +* **Java runtime** - Inherited from java-ffmpeg base image |
| 32 | +* **FFMPEG** - Inherited from java-ffmpeg base image |
| 33 | + |
| 34 | +## Development |
| 35 | + |
| 36 | +### CI/CD Pipeline |
| 37 | + |
| 38 | +The project uses GitHub Actions for continuous integration and deployment: |
| 39 | + |
| 40 | +- **Platform**: Images are built for `linux/amd64` |
| 41 | +- **Apple Silicon support**: Works seamlessly on M1/M2/M3/M4 Macs via Docker Desktop's Rosetta 2 emulation |
| 42 | +- **Automated testing**: Java and FFMPEG versions are verified before pushing |
| 43 | +- **Image analysis**: Uses `dive` for Docker image layer analysis |
| 44 | +- **Dual registry push**: Automatically pushes to Docker Hub and GitHub Container Registry |
| 45 | +- **Git tag versioning**: Pushing a git tag automatically creates a corresponding Docker image tag |
| 46 | + |
| 47 | +### Running on Apple Silicon Macs (M1/M2/M3/M4) |
| 48 | + |
| 49 | +This image is built for `linux/amd64` architecture but runs seamlessly on Apple Silicon Macs through **Rosetta 2** emulation in Docker Desktop. |
| 50 | + |
| 51 | +#### Prerequisites |
| 52 | + |
| 53 | +1. **Docker Desktop for Mac** (version 4.25.0 or later recommended) |
| 54 | + - Download from: https://www.docker.com/products/docker-desktop |
| 55 | + |
| 56 | +2. **Rosetta 2** (usually already installed on modern macOS) |
| 57 | + - To verify/install: `softwareupdate --install-rosetta` |
| 58 | + |
| 59 | +#### Enable Rosetta 2 in Docker Desktop |
| 60 | + |
| 61 | +1. Open **Docker Desktop** |
| 62 | +2. Go to **Settings** (⚙️ icon) → **General** |
| 63 | +3. Enable **"Use Rosetta for x86_64/amd64 emulation on Apple Silicon"** |
| 64 | +4. Click **Apply & Restart** |
| 65 | + |
| 66 | + |
| 67 | + |
| 68 | +#### Verify It's Working |
| 69 | + |
| 70 | +```bash |
| 71 | +# Pull and run the image |
| 72 | +docker pull aemdesign/aem-base:latest |
| 73 | +docker run --rm aemdesign/aem-base:latest uname -m |
| 74 | + |
| 75 | +# Expected output: x86_64 (running via Rosetta 2) |
| 76 | +``` |
| 77 | + |
| 78 | +#### Performance Notes |
| 79 | + |
| 80 | +- **Rosetta 2 emulation** provides near-native performance for most workloads |
| 81 | +- First container start may be slightly slower (Rosetta translation cache warmup) |
| 82 | +- Subsequent starts are fast |
| 83 | +- **No code changes needed** - everything works transparently |
| 84 | + |
| 85 | +### Monitoring Pipeline Status |
| 86 | + |
| 87 | +Use the `get-action-logs.ps1` PowerShell script to monitor GitHub Actions workflow status and logs. |
| 88 | + |
| 89 | +#### Prerequisites |
| 90 | + |
| 91 | +- GitHub CLI (`gh`) must be installed and authenticated |
| 92 | +- Install: `winget install --id GitHub.cli` |
| 93 | +- Authenticate: `gh auth login` |
| 94 | + |
| 95 | +#### Quick Start |
| 96 | + |
| 97 | +```powershell |
| 98 | +# Check current commit's pipeline status (saves logs to logs/ folder by default) |
| 99 | +.\get-action-logs.ps1 |
| 100 | +
|
| 101 | +# Wait for pipeline to complete |
| 102 | +.\get-action-logs.ps1 -WaitForCompletion |
| 103 | +
|
| 104 | +# Show logs in console |
| 105 | +.\get-action-logs.ps1 -ShowLogs |
| 106 | +
|
| 107 | +# Force re-download logs |
| 108 | +.\get-action-logs.ps1 -Force |
| 109 | +``` |
| 110 | + |
| 111 | +See full documentation: `Get-Help .\get-action-logs.ps1 -Full` |
| 112 | + |
| 113 | +### Creating a New Release |
| 114 | + |
| 115 | +```bash |
| 116 | +# Tag the commit |
| 117 | +git tag 1.0.0 |
| 118 | +git push origin 1.0.0 |
| 119 | +``` |
| 120 | + |
| 121 | +This will automatically build and push versioned Docker images to both registries. |
| 122 | + |
| 123 | +## License |
17 | 124 |
|
18 | | -* aem libs - for aem forms processing |
| 125 | +See [LICENSE](LICENSE) file for details. |
19 | 126 |
|
0 commit comments