loadout docker.instructions.md

Instructions for writing Dockerfiles and Docker Compose files. Docker packages software and its dependencies into portable containers, while Compose defines multiple containers used together.

In plain words
What is it for?
Use it when creating application, development, or CI containers, multi-stage builds, or Compose-based local services.
Why use it?
It helps create repeatable application images and development environments with fewer build and configuration problems.

Instructions file for GitHub Copilot

Install

Getting it into your agent

One page per mod, every tool's command on it. A separate URL per tool would split the same page into five that compete with each other.

agentmods
npx agentmods add instructions/stefaniuk/loadout/docker
Clone the repo
git clone --depth 1 https://github.com/stefaniuk/loadout

Made for: GitHub Copilot.

Per session 7,676 This file is loaded in full into every session.
When invoked 7,676 The same file — it is already loaded in full.
Security scan E 3 findings. Scan, not verified.
Origin original No closer match found in the catalogue.
Token cost

What it costs to keep this loaded

Counted locally with the o200k_base tokenizer, which is exact for GPT models; Claude uses its own tokenizer and its counts differ. Treat this as one consistent yardstick across the catalogue rather than a bill. Prices are per million input tokens.

ModelPer sessionOnce invoked
Fable 5 $0.07676 $0.07676
Opus 5 $0.03838 $0.03838
Sonnet 5 $0.01535 $0.01535
Haiku 4.5 $0.00768 $0.00768

Measured yesterday against content hash afd60d039e27, method: parsed. Prices are Anthropic first-party input rates as of 2026-08-30, from the pricing page.

Security

Grade E, and why

loadout docker.instructions.md scanned grade E with 3 findings against 26 rules in 11 categories — prompt injection, anti-refusal, data exfiltration, privilege escalation, supply chain, agent snooping, system-prompt leakage, SSRF and excessive agency — measured yesterday.

A static scan of the body, not an audit. Every finding is printed with the line that produced it so you can judge whether it matters here. A mod is markdown that instructs an agent; that is exactly why what it instructs is worth reading.

Downloads and executes remote codehighSupply chain

curl | sh runs whatever the server returns today, which is not necessarily what it returned when this was reviewed.

- [DF-SEC-009] Verify downloaded artefacts with checksums or signatures; avoid `curl | sh` or unverified remote installs.

Recursive force deletehighDestructive command

rm -rf with a variable or a broad path is one typo away from removing the wrong tree.

rm -rf /var/lib/apt/lists/*

Makes network callslowCapability

Not a fault in itself. Listed so you know the mod talks to something, and to what.

curl -L "$URL" -o source.tar.gz; \
.github/instructions/docker.instructions.md · 809 lines

How it starts

The opening of the file, as written. The whole thing — 809 lines — stays where its author put it; the contents beside it link to each section on GitHub.

Dockerfile Engineering Instructions (container image development) 🐳

These instructions define the default engineering approach for writing production-grade Dockerfiles and Docker Compose files for development.

They must remain applicable to:

  • Application container images
  • Base/foundation images
  • Tool wrapper images
  • Multi-stage build images
  • Development and CI/CD images
  • Docker Compose multi-service development environments

They are non-negotiable unless an exception is explicitly documented (with rationale and expiry) in an ADR/decision record.

Cross-references. For Makefile orchestration conventions that build Docker images, see makefile.instructions.md. For shell scripts that wrap Docker commands, see shell.instructions.md. This file focuses on Dockerfile patterns and Docker Compose for development.

Identifier scheme. Every normative rule carries a unique tag in the form [DF-<prefix>-NNN], where the prefix maps to the containing section (for example QR for Quick Reference, STR for Structure, FROM for Base Image, ARG for Build Arguments, ENV for Environment Variables, RUN for Run Instructions, COPY for Copy Instructions, META for Metadata, SEC for Security, OPT for Optimisation, CMP for Compose). Use these identifiers when referencing, planning, or validating requirements.


0. Quick reference (apply first) 🧠

This section exists so humans and AI assistants can reliably apply the most important rules even when context is tight.

  • [DF-QR-001] Pin base image versions: never use latest; pin to specific version with digest where possible ([DF-FROM-001], [DF-FROM-002]).
  • [DF-QR-002] Instruction order: FROMARGENVRUN (install) → COPYRUN (configure) → VOLUMEEXPOSEWORKDIRUSERCMD/ENTRYPOINT → Metadata ([DF-STR-001]).
  • [DF-QR-003] Multi-line RUN with set -ex: start RUN blocks with set -ex or set -ex; for debugging and fail-fast behaviour ([DF-RUN-001], [DF-RUN-002]).
  • [DF-QR-004] Build dependencies pattern: define, install, use, then purge build dependencies in a single RUN layer ([DF-RUN-004]–[DF-RUN-006]).
  • [DF-QR-005] Clean up in every RUN: remove temp files, package manager caches, and build artefacts at the end of each RUN ([DF-RUN-007]).
  • [DF-QR-006] Metadata at the end: place OCI-compliant LABEL instructions at the very end of the Dockerfile ([DF-META-001]–[DF-META-003]).
  • [DF-QR-007] Use .tool-versions for pinning: define image versions in .tool-versions for reproducibility ([DF-FROM-003]).
  • [DF-QR-008] Lint with hadolint: all Dockerfiles must pass hadolint with no errors or warnings ([DF-QG-001]).
  • [DF-QR-009] Non-root user: run containers as non-root where possible ([DF-SEC-001]).
  • [DF-QR-010] Minimal layers: combine related commands to reduce layer count and image size ([DF-OPT-001]).
  • [DF-QR-011] Docker Compose for development: use compose.yaml with healthchecks, secrets, custom networks, and Compose Watch for hot-reload ([DF-CMP-001]–[DF-CMP-030]).
  • [DF-QR-012] Integrity and least privilege: verify downloaded artefacts and lock down ownership/permissions at build time ([DF-SEC-009]–[DF-SEC-011]).

Read the full file on GitHub · 809 lines

Changes

What this file has done since we first saw it

Hashed on every crawl. A supply-chain change to an agent config is a question of when, not whether, so the history is kept rather than the latest state alone.

  1. yesterday First seen · 809 lines · 7,676 tokens per session scan E afd60d039e27

Subscribe to this mod's changes

loadout docker.instructions.md is an instructions file published in the GitHub repository stefaniuk/loadout (1 stars, last pushed 3d ago), licensed MIT. It adds 7,676 tokens to every session, about $0.0384 per session on Opus 5. A static security scan graded it E with 3 findings (downloads and executes remote code, recursive force delete, makes network calls). No closer match exists in the catalogue, so it is treated as the original; first seen 2026-08-31.