Registro de verificação

Os resultados, abertos.

16 testes aprovados em Compose 5.3.0. Escopo: resolução de modelo, sem execução de containers.

UTC: 2026-09-12T13:36:01.023802+00:00

Baixar entradas e resultados em JSON

✓ dot-env-is-not-container-env

Comando executado

docker compose -p composeclinic-proof config --format json

Valores fictícios do shell

{}

.env

CC_IMAGE_TAG=1.37
CC_ONLY=not-automatically-injected

compose.yaml

services:
  probe:
    image: busybox:${CC_IMAGE_TAG}

Resultado observado

{
  "image": "busybox:1.37",
  "environment": null
}
✓ explicit-map-passes-dot-env

Comando executado

docker compose -p composeclinic-proof config --format json

Valores fictícios do shell

{}

.env

CC_IMAGE_TAG=1.37
CC_ONLY=not-automatically-injected

compose.yaml

services:
  probe:
    image: busybox:${CC_IMAGE_TAG}
    environment:
      CC_ONLY: ${CC_ONLY:?CC_ONLY must be set}

Resultado observado

{
  "image": "busybox:1.37",
  "environment": {
    "CC_ONLY": "not-automatically-injected"
  }
}
✓ env-file-does-not-feed-model-interpolation

Comando executado

docker compose -p composeclinic-proof config --format json

Valores fictícios do shell

{}

app.env

CC_IMAGE_TAG=9.9
CC_APP_MODE=debug

compose.yaml

services:
  probe:
    image: busybox:${CC_IMAGE_TAG:-1.37}
    env_file: app.env
    environment:
      CC_PASSED: ${CC_APP_MODE:-fallback}

Resultado observado

{
  "image": "busybox:1.37",
  "environment": {
    "CC_APP_MODE": "debug",
    "CC_IMAGE_TAG": "9.9",
    "CC_PASSED": "fallback"
  }
}
✓ literal-environment-wins

Comando executado

docker compose -p composeclinic-proof config --format json

Valores fictícios do shell

{
  "CC_LEVEL": "shell"
}

app.env

CC_LEVEL=file

compose.yaml

services:
  probe:
    image: busybox:1.37
    env_file: app.env
    environment:
      CC_LEVEL: literal

Resultado observado

{
  "environment": {
    "CC_LEVEL": "literal"
  }
}
✓ interpolation-shell-wins

Comando executado

docker compose -p composeclinic-proof --env-file cli.env config --format json

Valores fictícios do shell

{
  "CC_LEVEL": "shell"
}

.env

CC_LEVEL=dot-env

cli.env

CC_LEVEL=cli-file

app.env

CC_LEVEL=service-file

compose.yaml

services:
  probe:
    image: busybox:1.37
    env_file: app.env
    environment:
      CC_LEVEL: ${CC_LEVEL:-fallback}

Resultado observado

{
  "environment": {
    "CC_LEVEL": "shell"
  }
}
✓ interpolation-cli-file

Comando executado

docker compose -p composeclinic-proof --env-file cli.env config --format json

Valores fictícios do shell

{}

.env

CC_LEVEL=dot-env

cli.env

CC_LEVEL=cli-file

app.env

CC_LEVEL=service-file

compose.yaml

services:
  probe:
    image: busybox:1.37
    env_file: app.env
    environment:
      CC_LEVEL: ${CC_LEVEL:-fallback}

Resultado observado

{
  "environment": {
    "CC_LEVEL": "cli-file"
  }
}
✓ interpolation-default-dot-env

Comando executado

docker compose -p composeclinic-proof config --format json

Valores fictícios do shell

{}

.env

CC_LEVEL=dot-env

cli.env

CC_LEVEL=cli-file

app.env

CC_LEVEL=service-file

compose.yaml

services:
  probe:
    image: busybox:1.37
    env_file: app.env
    environment:
      CC_LEVEL: ${CC_LEVEL:-fallback}

Resultado observado

{
  "environment": {
    "CC_LEVEL": "dot-env"
  }
}
✓ default-dot-env-project-path

Comando executado

docker compose -p composeclinic-proof -f project/compose.yaml config --format json

Valores fictícios do shell

{}

.env

CC_WHICH=caller

cli.env

CC_WHICH=explicit-caller-file

project/.env

CC_WHICH=project

project/config/service.env

CC_SERVICE_PATH=relative-to-compose-file

project/compose.yaml

services:
  probe:
    image: busybox:1.37
    env_file: config/service.env
    environment:
      CC_WHICH: ${CC_WHICH:-fallback}

Resultado observado

{
  "environment": {
    "CC_SERVICE_PATH": "relative-to-compose-file",
    "CC_WHICH": "project"
  }
}
✓ explicit-env-file-caller-path

Comando executado

docker compose -p composeclinic-proof --env-file cli.env -f project/compose.yaml config --format json

Valores fictícios do shell

{}

.env

CC_WHICH=caller

cli.env

CC_WHICH=explicit-caller-file

project/.env

CC_WHICH=project

project/config/service.env

CC_SERVICE_PATH=relative-to-compose-file

project/compose.yaml

services:
  probe:
    image: busybox:1.37
    env_file: config/service.env
    environment:
      CC_WHICH: ${CC_WHICH:-fallback}

Resultado observado

{
  "environment": {
    "CC_SERVICE_PATH": "relative-to-compose-file",
    "CC_WHICH": "explicit-caller-file"
  }
}
✓ wrong-cli-env-path-fails

Comando executado

docker compose -p composeclinic-proof --env-file config/service.env -f project/compose.yaml config --format json

Valores fictícios do shell

{}

.env

CC_WHICH=caller

cli.env

CC_WHICH=explicit-caller-file

project/.env

CC_WHICH=project

project/config/service.env

CC_SERVICE_PATH=relative-to-compose-file

project/compose.yaml

services:
  probe:
    image: busybox:1.37
    env_file: config/service.env
    environment:
      CC_WHICH: ${CC_WHICH:-fallback}

Resultado observado

{
  "exit_nonzero": true,
  "contains": "couldn't find env file"
}
✓ empty-and-unset-defaults

Comando executado

docker compose -p composeclinic-proof config --format json

Valores fictícios do shell

{}

.env

CC_EMPTY=

compose.yaml

services:
  probe:
    image: busybox:1.37
    environment:
      CC_A: ${CC_EMPTY:-fallback}
      CC_B: ${CC_EMPTY-fallback}

Resultado observado

{
  "environment": {
    "CC_A": "fallback",
    "CC_B": ""
  }
}
✓ required-empty-fails

Comando executado

docker compose -p composeclinic-proof config --format json

Valores fictícios do shell

{}

.env

CC_EMPTY=

compose.yaml

services:
  probe:
    image: busybox:1.37
    environment:
      CC_VALUE: ${CC_EMPTY:?CC_EMPTY must be set}

Resultado observado

{
  "exit_nonzero": true,
  "contains": "CC_EMPTY must be set"
}
✓ port-loopback-v4

Comando executado

docker compose -p composeclinic-proof config --format json

Valores fictícios do shell

{}

compose.yaml

services:
  probe:
    image: busybox:1.37
    ports:
      - "127.0.0.1:8080:80/tcp"

Resultado observado

{
  "ports": [
    {
      "mode": "ingress",
      "host_ip": "127.0.0.1",
      "target": 80,
      "published": "8080",
      "protocol": "tcp"
    }
  ]
}
✓ port-loopback-v6

Comando executado

docker compose -p composeclinic-proof config --format json

Valores fictícios do shell

{}

compose.yaml

services:
  probe:
    image: busybox:1.37
    ports:
      - "[::1]:8443:443/tcp"

Resultado observado

{
  "ports": [
    {
      "mode": "ingress",
      "host_ip": "::1",
      "target": 443,
      "published": "8443",
      "protocol": "tcp"
    }
  ]
}
✓ port-all-v4-udp

Comando executado

docker compose -p composeclinic-proof config --format json

Valores fictícios do shell

{}

compose.yaml

services:
  probe:
    image: busybox:1.37
    ports:
      - "0.0.0.0:5353:53/udp"

Resultado observado

{
  "ports": [
    {
      "mode": "ingress",
      "host_ip": "0.0.0.0",
      "target": 53,
      "published": "5353",
      "protocol": "udp"
    }
  ]
}
✓ port-all-v6

Comando executado

docker compose -p composeclinic-proof config --format json

Valores fictícios do shell

{}

compose.yaml

services:
  probe:
    image: busybox:1.37
    ports:
      - "[::]:8080:80/tcp"

Resultado observado

{
  "ports": [
    {
      "mode": "ingress",
      "host_ip": "::",
      "target": 80,
      "published": "8080",
      "protocol": "tcp"
    }
  ]
}