docs: public static String resolveRelativeVolumeBinding(File baseDir, String bindingString) {
  
          // a 'services:' -> service -> 'volumes:' may be formatted as:
          // (https://docs.docker.com/compose/compose-file/compose-file-v2/#volumes-volume_driver)
          //
          // volumes:
          //  # Just specify a path and let the Engine create a volume
          //  - /var/lib/mysql
          //
          //  # Specify an absolute path mapping
          //  - /opt/data:/var/lib/mysql
          //
          //  # Path on the host, relative to the Compose file
          //  - ./cache:/tmp/cache
          //
          //  # User-relative path
          //  - ~/configs:/etc/configs/:ro
          //
          //  # Named volume
          // - datavolume:/var/lib/mysql
  
          String[] pathParts = bindingString.split(":");
          String localPath = pathParts[0];
  
          if (isRelativePath(localPath)) {
              File resolvedFile;
              if (isUserHomeRelativePath(localPath)) {
                  resolvedFile = resolveAbsolutely(prepareUserHomeRelativePath(localPath), System.getProperty("user.home"));
              } else {
                  if (!baseDir.isAbsolute()) {
                      throw new IllegalArgumentException("Base directory '" + baseDir + "' must be absolute.");
                  }
                  resolvedFile = resolveAbsolutely(localPath, baseDir.getAbsolutePath());
              }
              try {
                  localPath = resolvedFile.getCanonicalFile().getAbsolutePath();
              } catch (IOException e) {
                  throw new RuntimeException("Unable to canonicalize '" + resolvedFile + "'");
              }
          }
  
          if (pathParts.length > 1) {
              pathParts[0] = localPath;
              return join(":", pathParts);
          }
  
          return localPath;
      }