dagger/dagger · error

ports.%s.backendPort must be an integer

Error message

ports.%s.backendPort must be an integer

What it means

setConfigValue was asked to write ports.<host>.backendPort, but the value being set did not decode to an integer. Backend ports are typed as integers in the PortMapping struct; the host (%s) names the port mapping whose backendPort was given a non-numeric value (e.g. a service name instead of backendService).

Source

Thrown at core/workspace/config.go:1316

		env.Modules[moduleName] = module
		cfg.Env[envName] = env
		return nil
	case "ports":
		if len(parts) != 3 {
			return fmt.Errorf("invalid key %q; expected ports.<host>.backendService or ports.<host>.backendPort", strings.Join(parts, "."))
		}
		if cfg.Ports == nil {
			cfg.Ports = map[string]PortMapping{}
		}
		host := parts[1]
		pm := cfg.Ports[host]
		switch parts[2] {
		case "backendService":
			pm.BackendService = fmt.Sprint(value)
		case "backendPort":
			port, ok := value.(int64)
			if !ok {
				return fmt.Errorf("ports.%s.backendPort must be an integer", host)
			}
			pm.BackendPort = int(port)
		default:
			return fmt.Errorf("unknown config key %q", strings.Join(parts, "."))
		}
		cfg.Ports[host] = pm
		return nil
	default:
		return fmt.Errorf("unknown config key %q", strings.Join(parts, "."))
	}
}

func validateKeyAgainstType(parts []string, t reflect.Type, fullKey, op string) error {
	if len(parts) == 0 {
		return nil
	}

	field, ok := findTOMLField(t, parts[0])

View on GitHub (pinned to 82ba2681db)

Solutions

  1. Write the port as an integer without quotes or units
  2. Remove any surrounding whitespace or formatting from the value
Defensive patterns

Strategy: validation

When it happens

Trigger: Thrown at core/workspace/config.go:1316 when the library encounters an invalid state.

Common situations: See trigger scenarios.


AI-assisted analysis of dagger/dagger@82ba2681db (2026-09-05). Data as JSON: /api/errors/ce4f66af20eed054. Report an issue: GitHub.