compose icon indicating copy to clipboard operation
compose copied to clipboard

`docker compose config` outputs an invalid format for `deploy.resources.limits.cpus`

Open stavros-k opened this issue 1 year ago • 0 comments

Description

docker compose config outputs an invalid format.

Input

services:
  nginx:
    image: nginx
    deploy:
      resources:
        limits:
          cpus: "2.0"
❯ docker  compose -f in.yaml config > out.yaml

❯ docker  compose -f in.yaml config > out.yaml

❯ docker compose -f out.yaml up               
1 error(s) decoding:

* error decoding 'services[nginx].deploy.resources.limits.cpus': unexpected value type int for cpus

Output

name: apps
services:
  nginx:
    deploy:
      resources:
        limits:
          cpus: 2
    image: nginx
    networks:
      default: null
networks:
  default:
    name: apps_default

Note that if you set cpus to "2.1" it works as expected. This is probably on how yaml serializes the output. But maybe when re-importing the outputed file, value should be converted to string first before validated/parsed.

Steps To Reproduce

See above.

Compose Version

❯ docker compose version
Docker Compose version v2.27.1

Docker Environment

❯ docker info
Client: Docker Engine - Community
 Version:    26.1.4
 Context:    default
 Debug Mode: false
 Plugins:
  buildx: Docker Buildx (Docker Inc.)
    Version:  v0.14.1
    Path:     /usr/libexec/docker/cli-plugins/docker-buildx
  compose: Docker Compose (Docker Inc.)
    Version:  v2.27.1
    Path:     /usr/libexec/docker/cli-plugins/docker-compose

Server:
 Containers: 1
  Running: 1
  Paused: 0
  Stopped: 0
 Images: 23
 Server Version: 26.1.4
 Storage Driver: overlay2
  Backing Filesystem: extfs
  Supports d_type: true
  Using metacopy: false
  Native Overlay Diff: true
  userxattr: false
 Logging Driver: json-file
 Cgroup Driver: systemd
 Cgroup Version: 2
 Plugins:
  Volume: local
  Network: bridge host ipvlan macvlan null overlay
  Log: awslogs fluentd gcplogs gelf journald json-file local splunk syslog
 Swarm: inactive
 Runtimes: io.containerd.runc.v2 runc
 Default Runtime: runc
 Init Binary: docker-init
 containerd version: d2d58213f83a351ca8f528a95fbd145f5654e957
 runc version: v1.1.12-0-g51d5e94
 init version: de40ad0
 Security Options:
  apparmor
  seccomp
   Profile: builtin
  cgroupns
 Kernel Version: 6.8.0-35-generic
 Operating System: Ubuntu 24.04 LTS
 OSType: linux
 Architecture: x86_64
 CPUs: 20
 Total Memory: 62.54GiB
 Name: my-user-tuxedo-infinity-book-pro-gen8-mk1
 ID: 94c40e6d-b572-4a2f-a475-02a342b0cf77
 Docker Root Dir: /var/lib/docker
 Debug Mode: false
 Experimental: false
 Insecure Registries:
  127.0.0.0/8
 Live Restore Enabled: false

Anything else?

No response

stavros-k avatar Jun 13 '24 14:06 stavros-k