Skip to content

Align container naming rationale with the one-application-per-host contract #205

Description

@vishr

Problem

Onebox explicitly defines and enforces one application per host:

  • README.md: “One host, one application, no failover.”
  • docs/product.md: “one application per environment, on one active production host.”
  • internal/app/preflight.go refuses a host owned by another application.

However, the rationale above Engine.slotNames in internal/engine/roll.go says the application prefix is required because “two applications that each have a web workload would both want web-1.” That scenario is outside the supported and enforced topology.

This makes the reason for names such as <app>-postgres-1 unclear, particularly because the equally managed host proxy is named onebox-proxy.

Expected clarification

Document the naming boundary consistently:

  • onebox-* denotes host-scoped Onebox infrastructure, such as onebox-proxy and onebox-discovery.
  • <app>-<component>-<replica> denotes runtime resources owned by the sole application, including managed services.
  • The application prefix provides explicit ownership, stable generated identity, and collision detection against stale or foreign Docker resources—not simultaneous multi-application tenancy.
  • Provider-internal service resources continue to use the injective ob_<app>_<service> form.

Update the misleading slotNames comment and, if appropriate, add this rationale to the naming documentation so the distinction between “Onebox-managed” and “host-scoped Onebox infrastructure” is explicit.

Version

ob version v2026.9.13 (fcd4c68e56bb5baaaedee24f9f4072d62023bbde).

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    documentationImprovements or additions to documentation

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions