Skip to content
Novus Examples
yaml601 B

Docker Compose Profiles

Five Compose services across three profiles, one of which belongs to two profiles at once. Services with no profiles key always start; the rest are opt-in, which is the selection logic this fixture exists to test.

Preview — first 29 linesyaml
services:
  api:
    image: registry.example.invalid/example-org/orders:1.4.0
    ports:
      - "8080:8080"

  cache:
    image: registry.example.invalid/example-org/cache:2.1.0

  debug-tools:
    image: registry.example.invalid/example-org/tools:0.4.0
    profiles:
      - debug
    command: ["sleep", "infinity"]

  seed-data:
    image: registry.example.invalid/example-org/orders:1.4.0
    profiles:
      - debug
      - fixtures
    command: ["seed", "--rows", "100"]

  docs:
    image: registry.example.invalid/example-org/docs:1.0.0
    profiles:
      - docs
    ports:
      - "8081:80"

Specifications

Services
5
Always On Services
2
Profiles
3
Services In Multiple Profiles
1

Testing contract

Expected to pass
Scenario
Select the active service set for a given Compose profile
Expected result
With no profile active exactly 2 services are selected; activating debug selects 4, because seed-data belongs to both debug and fixtures

What is a .yaml file?

YAML (YAML Ain't Markup Language) is a human-readable data-serialization format using indentation, key-value pairs, and lists, and is a superset of JSON. It supports comments, anchors, and multiple documents per file, favoring readability for configuration. Its indentation sensitivity makes it error-prone to hand-edit.

How to use this file

Use an example YAML file to test config parsers, indentation and anchor handling, multi-document streams, and safe-loading to avoid arbitrary object construction.

How to use this file for testing

“Docker Compose Profiles” is a deterministic Novus Examples fixture for Config testing, Config parsing, Editor testing. TOML, INI, YAML, .env, and dotfile configuration samples with nested sections and typed values — for testing config parsers, loaders, and environment tooling.

Documented properties for this file: YAML · 601 bytes. Compare results against paired or grouped companions on this page when present (clean↔damaged, searchable↔scanned, or format twins) so scores stay reproducible across runs.

Download the file once, keep the path stable in CI or local scripts, and treat the spec table as the contract: dimensions, seeds, field lists, and roles are intentional. Corrupt or invalid samples are labelled as such — expect parsers to fail loudly rather than silently accept them.

Pipeline and infrastructure fixtures are inert configuration: steps reference fictional images and scripts, and nothing here executes. Run your linter, schema validator, migrator, or policy engine against them, and expect the deprecated-syntax and intentionally invalid variants to be rejected.

Point your config loader at the file and assert it reads the documented sections and typed values, including any deliberately-tricky nesting or comments.

Code examples

import yaml  # pip install pyyaml

with open("compose-profiles.yaml") as f:
    data = yaml.safe_load(f)
print(data)

Generated by generation/pipelines.py. Free for any use, no attribution required — license.