Skip to content

[BUG] Negative replica count in scale flags (docker compose scale / --scale) is accepted without validation #14482

Open

Description

@arsalanyavari

Description

According to the Compose Specification, scale must be a non-negative integer (>= 0). The Compose file loader already enforces this and rejects negative scale: values in compose.yaml.

Additionally, the CLI properly validates non-numeric inputs — for instance, docker compose scale web=abc immediately returns:

invalid scale specifier: can't parse replica value as int: web=abc

However, when passing a negative replica count through the CLI flags, such as docker compose scale web=-1 or docker compose up --scale web=-1, the value is accepted without any validation error. The service is then assigned a negative replica count, which leads to unexpected behavior during convergence and container lifecycle handling.

The CLI should validate that the replica count is non-negative, consistent with the Compose Specification and with how the compose file loader treats negative scales.

Steps To Reproduce

  1. Create a minimal compose.yaml:
    services:
      web:
        image: alpine
  2. Attempt to scale the service with a negative replica count:
    docker compose scale web=-1
    Or:
    docker compose up --dry-run --scale web=-1

Observed Result

  • docker compose scale web=-1:

    [+] scale 1/1
     ✔ Network a_default Created                                                                                    0.0s
    service "web" has no container to start
    

    The negative value -1 is accepted without any validation error.

  • docker compose up --dry-run --scale web=-1:

    end of 'compose up' output, interactive run is not supported in dry-run mode
    

    The command finishes without warning or error regarding the negative replica count.

Compose Version

$ docker compose version
Docker Compose version v5.5.0

Docker Environment

Docker version 29.9.3, build 5457199aa5
Plugins:
  buildx: Docker Buildx (Docker Inc.)
    Version:  v0.17.2
    Path:     /path/to/.docker/cli-plugins/docker-buildx
  compose: Docker Compose (Docker Inc.)
    Version:  v5.5.0
    Path:     /path/to/.docker/cli-plugins/docker-compose

Anything else?

No response

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

Metadata

Metadata

Assignees

No one assigned

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions