Docker Images¶
OnDemand Loop uses two specialized Docker images to streamline development and ensure consistent environments across different setups.
🐳 Open OnDemand Image¶
This image provides a complete Open OnDemand installation for testing your application in a realistic environment.
Components¶
- Minimal Rocky Linux 8 base system
- Full Open OnDemand installation and configuration
- Apache/NGINX/Passenger web server setup
For supported Open OnDemand versions, see the Open OnDemand compatibility section.
⚙️ Builder Image¶
This image handles all build operations, testing, and development tasks without requiring you to install Ruby, Node.js, or other dependencies locally.
Components¶
- Minimal Rocky Linux 8 base system
- Ruby and Node.js (versions matching Open OnDemand requirements)
- Build tools, Rake, and development dependencies
Available Versions¶
Image Tag | Target | Ruby | Node.js |
---|---|---|---|
hmdc/ondemand-loop:builder-R3.1 |
OOD v3.x | 3.1 | 18 |
hmdc/ondemand-loop:builder-R3.3 |
OOD v4.x | 3.3 | 20 |
Image Organization¶
All OnDemand Loop Docker images are hosted under the hmdc/ondemand-loop repository on DockerHub.
Tag Naming Convention:
- Builder images:
builder-Rx.x
(wherex.x
= Ruby version)- Example:
hmdc/ondemand-loop:builder-R3.3
- Example:
- Other images: Specific naming based on purpose (development environments, testing images, etc.)
🔧 The builder image definition is maintained in docker/Dockerfile.builder
.
Creating New Builder Images
When Open OnDemand updates require newer Ruby or Node.js versions:
- Update the Makefile target
loop_docker_builder
with new version numbers - Run
make loop_docker_builder
to build and tag the new image - Push the image to DockerHub for team use
Helper Scripts¶
The scripts/
directory contains automation scripts used by the Makefile and Docker containers:
Script | Purpose | Usage |
---|---|---|
guide.sh |
Documentation management | Builds or serves this documentation using MkDocs |
loop_build.sh |
Application build | Installs dependencies, compiles Rails assets and prepares the application for deployment |
loop_coverage_badge.sh |
Coverage reporting | Generates and updates test coverage badges in docs/badges |
loop_release_notes.sh |
Release automation | Creates release notes from Git commit history |
loop_test.sh |
Test execution | Runs the complete test suite and generates coverage reports |
loop_version.sh |
Version management | Updates version numbers in preparation for new releases |
These scripts are called automatically by Makefile targets, so you typically won't need to run them directly.