GoogleContainerTools/jib · error · InvalidContainerVolumeException
${path}
Error message
${path} What it means
Jib's getVolumesSet converts each configured container volume path to an AbsoluteUnixPath. If a configured volume string is not a valid absolute Unix path (e.g. relative, backslashes, or empty), the IllegalArgumentException from AbsoluteUnixPath.get is rethrown as InvalidContainerVolumeException with the offending path as both value and message template.
Solutions
- Change the volume to an absolute Unix path starting with '/', e.g. /app/data.
- Replace backslashes with forward slashes and drop drive letters if migrating from Windows path conventions.
- Remove empty or whitespace-only entries from the volumes list.
Example fix
// before (Gradle) container.volumes = ['app/data'] // after container.volumes = ['/app/data']
Defensive patterns
Strategy: validation
Validate before calling
// Validate volume paths before configuring Jib
volumes.forEach(v -> {
if (!v.startsWith("/"))
throw new IllegalArgumentException("volume must be absolute unix path: " + v);
}); Try / catch
try {
processCommonConfiguration(...);
} catch (InvalidContainerVolumeException e) {
logger.error("Invalid volume '" + e.getInvalidVolume() + "'; use absolute unix paths like /app/data");
} Prevention
- Volume paths must start with '/' and use forward slashes
- Never reuse Windows paths or shell variable expansions unchecked in volumes config
- Keep volumes in a validated constant list in the build script
When it happens
Trigger: processCommonConfiguration -> getVolumesSet encounters a <volumes>/<volume> value where AbsoluteUnixPath.get(path) throws IllegalArgumentException — path does not start with '/' or contains invalid segments.
Common situations: Writing volumes: [app/data] without leading slash; copying Windows-style paths like C:\data; typos such as a leading space; empty string in the volumes list.
Understand the failure class
Background: "Invalid ... format", "must be in format X", "does not look like a ..." — invalid argument format errors across CLI tools and libraries — this error's family across 17 libraries.
Related errors
- ${appRoot}
- ${configuredCreationTime}
- ${modificationTime}
- packaged containerizing mode for WAR is not yet supported
- platform configuration is missing an OS value
AI-assisted analysis of GoogleContainerTools/jib@fb949e2676 (2026-09-06).
Data as JSON: /api/errors/4ea7b01d387ca9e7.
Report an issue: GitHub.
Appendix: source
Thrown at jib-plugins-common/src/main/java/com/google/cloud/tools/jib/plugins/common/PluginConfigurationProcessor.java:838
}
/**
* Parses the list of raw volumes directories to a set of {@link AbsoluteUnixPath}.
*
* @param rawConfiguration raw configuration data
* @return the set of parsed volumes.
* @throws InvalidContainerVolumeException if {@code volumes} are not valid absolute Unix paths
*/
@VisibleForTesting
static Set<AbsoluteUnixPath> getVolumesSet(RawConfiguration rawConfiguration)
throws InvalidContainerVolumeException {
Set<AbsoluteUnixPath> volumes = new HashSet<>();
for (String path : rawConfiguration.getVolumes()) {
try {
AbsoluteUnixPath absoluteUnixPath = AbsoluteUnixPath.get(path);
volumes.add(absoluteUnixPath);
} catch (IllegalArgumentException exception) {
throw new InvalidContainerVolumeException(path, path, exception);
}
}
return volumes;
}
/**
* Gets the value of the {@code appRoot} parameter. If the parameter is empty, returns {@code
* /var/lib/jetty/webapps/ROOT} for WAR projects or {@link JavaContainerBuilder#DEFAULT_APP_ROOT}
* for other projects.
*
* @param rawConfiguration raw configuration data
* @param projectProperties the project properties
* @return the app root value
* @throws InvalidAppRootException if {@code appRoot} value is not an absolute Unix path
*/
@VisibleForTesting
static AbsoluteUnixPath getAppRootChecked(View on GitHub (pinned to fb949e2676)