Overview
Placeholders use the{{placeholder}} syntax and are replaced during the metadata resolution phase. They’re commonly used in:
- Docker image tags
- Image names
- Build arguments
- Labels
Available Placeholders
Version Placeholders
Full version from the variant configuration.Example: Results in:
11.3, 0.4.2, abc123411.3, 0.4.2, etc.Major version number (semver).Example:
11.3.5 → 11Only available for versions with valid semver format (e.g.,
1.2.3). Not available for SHA-based versions.Minor version number (semver).Example:
11.3.5 → 3Patch version number (semver).Example:
11.3.5 → 5Commit Placeholders
Short commit SHA (7 characters).Example: Results in:
e4b5388dev-e4b5388Full commit SHA (40 characters).Example:
e4b53880af4026b8be6a870ae7d8133f744a6181App Metadata
App name from Results in:
meta.json.Example: cobalt, iconesmyuser/cobaltUsage Examples
Docker Tags
Image Names
cobalt, this generates:
dockerhub-user/cobaltghcr.io/github-org/cobaltregistry.example.com/cobalt
Build Arguments
Labels
Complete Examples
Stable Release with Semver
apps/cobalt/meta.json
myuser/cobalt:latestmyuser/cobalt:11.3myuser/cobalt:11
Development Build with SHA
apps/cobalt/meta.json
myuser/cobalt:devmyuser/cobalt:dev-8d9bccc
Multi-Registry with Full Metadata
apps/myapp/meta.json
docker.io/user/myapp:latestdocker.io/user/myapp:2.5.3docker.io/user/myapp:2.5docker.io/user/myapp:2ghcr.io/user/myapp:latestghcr.io/user/myapp:2.5.3ghcr.io/user/myapp:2.5ghcr.io/user/myapp:2
APP_VERSION=2.5.3GIT_COMMIT=abc123def456
version=2.5.3commit=abc123d
Placeholder Resolution
Placeholders are resolved in this order:- App metadata (
{{name}}) - frommeta.json - Version info (
{{version}},{{sha}},{{fullSha}}) - from variant config - Semver parts (
{{major}},{{minor}},{{patch}}) - parsed from version
Version Parsing
Version strings are parsed with loose semver matching:SHA-based versions (like
abc123) don’t have semver parts, so {{major}}, {{minor}}, and {{patch}} will be empty.Alternative Syntax
Placeholders support multiple bracket styles:{{placeholder}}- Recommended (double curly braces){placeholder}- Single curly braces$placeholder$- Dollar signs
Escaping Placeholders
To use literal placeholder text without replacement, escape with backslashes:{{version}}
Best Practices
-
Use semantic versioning when possible:
-
Include SHA for development builds:
-
Use descriptive build arguments:
-
Add version labels:
-
Keep image names simple:
Related
- Docker Configuration - Docker build options
- Meta Schema - Complete configuration reference
- Checkver Types - Version checking strategies