Skip to content
Skills Library
DevOps & cloud · Building & coding

developing-docker-systems

/developing-docker-systems

Builds, tests and runs a Docker Compose system: a change proven in a throwaway project with a test profile, parallel lanes in worktrees, lean images. Use when building, changing, testing, running or tearing down a system defined by Dockerfiles and Compose files.

Repository
workproof ↗
Licence
MIT
Last repository change
11.11.2026

Assessment and security

90/ 100Class: good
Format25 / 25
Frontmatter with name and description, valid name, description up to 1,024 characters, name matching the folder.
Discoverability25 / 25
Description explains when to use the skill, has a reasonable length and uses third person.
Content25 / 35
At least 150 words and at most 500 lines, headings, step lists, examples or code.
Hygiene15 / 15
No placeholders such as TODO, no Windows paths, with a licence.
Riskno signals detected in the scan
Files in this package
1
Scripts
0
HTML comments
0
URLs in SKILL.md
0
Deprecation

No signals detected. Repository changed on 11.11.2026, without references to retired models or APIs.

Licence

MIT, open: use and modify while retaining author attribution.

What it does and when to use it

Builds, tests and runs a Docker Compose system: a change proven in a throwaway project with a test profile, parallel lanes in worktrees, lean images. Use when building, changing, testing, running or tearing down a system defined by Dockerfiles and Compose files.

Original author description

Builds, tests and runs a Docker Compose system: a change proven in a throwaway project with a test profile, parallel lanes in worktrees, lean images. Use when building, changing, testing, running or tearing down a system defined by Dockerfiles and Compose files.

How it works

  1. Proving a change
  2. Images
  3. Lanes in parallel
  4. Before up of the system's own stack
  5. Secrets
Original SKILL.md headings · 41 lines, 511 words
SKILL.md preview
---
name: developing-docker-systems
description: "Builds, tests and runs a Docker Compose system: a change proven in a throwaway project with a test profile, parallel lanes in worktrees, lean images. Use when building, changing, testing, running or tearing down a system defined by Dockerfiles and Compose files."
---

# Developing Docker systems

Each system's own commands live in its `CLAUDE.md`.

## Proving a change

1. `docker compose config -q --no-interpolate` checks the files without printing the interpolated config, which holds secrets.
2. Build only the images the change reaches: `docker compose -p <system>-<id> --profile test build <runner> <services it starts>`. A build or run over a minute goes to the background, with its own log and its exit code read.
3. Run the tests in their container, bounded: `docker compose -p <system>-<id> --profile test run --rm <runner> [paths]`; read the JUnit file or the runner's summary, not only its exit code.
4. A network feature: bring the stack up and `curl -fsS` its endpoint; a one-shot service exits, so check it with `docker compose ps`, not `up --wait`.
5. `docker compose -p <system>-<id> --profile test down` once the stack is spent; add `-v` only when that stack made a volume (`docker volume ls --filter label=com.docker.compose.project=<system>-<id> -q` lists it), in a command of its own. Never `-v` on the system's own long-lived stack.

On Windows, absolute `-f` paths and override volumes start with an upper-case drive letter (`C:/`): a lower-case one can make BuildKit refuse with `additional privileges requested`, because the Dockerfile path no longer matches the context. In Git Bash, a container path argument (`-w /srv`) is rewritten to a Windows path: prefix the command with `MSYS_NO_PATHCONV=1`.

## Images

Docker's build best practices (docs.docker.com/build/building/best-practices/):

- Multi-stage: one stage fetches dependencies from the lockfile alone (cached until it changes), one builds, and each final stage copies only what runs plus production dependencies.
- Bases pinned by a supported version and digest (`node:<LTS>-slim@sha256:...`), never `latest` or an end-of-life release; update the digest with `--pull`.
- Installs from the lockfile only (`npm ci`, `pnpm install --frozen-lockfile`).
- Final stages run as a non-root `USER`; Compose adds `read_only`, `cap_drop: [ALL]` and `no-new-privileges`. Files copied into a volume with `docker compose cp` land owned by root: hand them to the service's user with a one-off `chown` run as root with `--cap-add CHOWN`.
- Health checks run with a tool the image already has; never install `curl` only for them.
- `.dockerignore` keeps `.env`, `.git`, dependency folders and build output out of the context.

## Lanes in parallel

- Commit first, then `git worktree add ../.<system>-worktrees/<id> -b lane/<id>`.
- Each lane runs everything under `-p <system>-<id>`, publishes no port and fixes no subnet.
- A lane comes back with `git merge --no-ff lane/<id>`, so `git branch -d` can remove it; then `git worktree remove`.

## Before `up` of the system's own stack

- Check each published port is free and see what else runs (`docker ps -a`).
- Check the Docker engine answers (`docker info`); stop it at the end only if this session started it and nothing else runs.

## Secrets

Never run a Docker command that prints a secret's value (`docker compose config` or `docker inspect` on a stack with real secrets, `env` or `printenv` inside a container, `cat` of a file under `/run/secrets`): check that a value is set without printing it.

Versions

RepositoryScoreLicence
This page · devBertini/workproof90MIT
devBertini/workproof90MIT

Database snapshot: 13.11.2026 · package version 1c84f2524d27 (SHA-256 digest of the entire package)

Downloads in the last 30 days: 0 · ranking

Report a problem with this skill: harmful content, incorrect descriptions or an author’s removal request.

Similar skills

  • 100docker
    Use when writing Dockerfiles, Docker Compose files, or managing container images. Covers multi-stage builds, layer caching, Compose services, and image best practices. USE FOR: Dockerfiles, Docker Compose, multi-stage builds, container image optimization, local service…
  • 100generating-docker-compose-files
    Execute use when you need to work with Docker Compose. This skill provides Docker Compose file generation with comprehensive guidance and automation. Trigger with phrases like "generate docker-compose", "create compose file", or "configure multi-container app".
  • 100generating-docker-compose-files
    Execute use when you need to work with Docker Compose. This skill provides Docker Compose file generation with comprehensive guidance and automation. Trigger with phrases like "generate docker-compose", "create compose file", or "configure multi-container app".
  • 100docker-compose-basics
    Use when defining and running multi-container Docker applications with Docker Compose YAML configuration.
  • 100docker
    Manage Docker containers, images, volumes, and Compose stacks via the `docker` CLI — list, inspect, logs, run, build, stop, remove, compose up/down. Use for local container ops.
  • 96docker
    Docker开发专家助手。当用户需要进行Docker镜像构建、容器编排、Dockerfile编写、Docker Compose或容器化部署时调用。

Feedback and reports

Your message goes to Bartosz Sokoliński. An email address is needed only for a reply. See the privacy policy.