Infra, Ops & WorkflowAttention9393/100
yunt-docker-images-build
Images Docker et Dockerfile (Yunt Academy) : pull/tag/push, couches, écriture d’un Dockerfile, multi-stage, cache, .dockerignore, optimisation taille et sécurité de base. À utiliser pour builder, tagger, publier ou alléger une image.
ou envoie-le directement à ton agent.
Installer dans ton projet
$ npx arboris-cli@latest install yunt-docker-images-buildYunt
academy.yunt.fr
Contenu à copier
--- name: yunt-docker-images-build description: > Images Docker et Dockerfile (Yunt Academy) : pull/tag/push, couches, écriture d’un Dockerfile, multi-stage, cache, .dockerignore, optimisation taille et sécurité de base. À utiliser pour builder, tagger, publier ou alléger une image. metadata: origin: Yunt course: Conteneuriser ses projets web avec Docker source: https://academy.yunt.fr/dashboard/catalogue --- # Yunt — Images & Dockerfile Compétences du cours Yunt Academy (images, premier Dockerfile, optimisation), condensées pour un agent. ## When to Activate - Comprendre tags, digests, couches et registre - Écrire ou revoir un Dockerfile - Accélérer les builds (cache) et réduire la taille - Publier une image (`tag` / `push`) ## When not to use - Seulement lancer un conteneur depuis une image existante → `yunt-docker-containers` - Orchestration multi-services → `yunt-docker-compose` ## Images & registre ```bash docker pull nginx:alpine docker images docker tag nginx:alpine moncompte/nginx:dev docker push moncompte/nginx:dev docker rmi moncompte/nginx:dev ``` - **Tag** : alias mutable (`latest` est dangereux en prod). - **Digest** (`@sha256:…`) : référence immuable. - Les couches partagées évitent de re-télécharger le commun. ## Dockerfile — structure minimale ```dockerfile FROM node:22-alpine AS base WORKDIR /app # Dépendances (couche cache) COPY package.json package-lock.json ./ RUN npm ci --omit=dev # Code COPY . . ENV NODE_ENV=production EXPOSE 3000 USER node CMD ["node", "server.js"] ``` ### Instructions essentielles | Instruction | Rôle | | --- | --- | | `FROM` | Image de base (préférer tags précis + alpine/slim si adapté) | | `WORKDIR` | Répertoire de travail | | `COPY` / `ADD` | Préférer `COPY` ; `ADD` seulement si extraction d’archive utile | | `RUN` | Couches build ; enchaîner avec `&&` et nettoyer les caches apt/npm | | `ENV` / `ARG` | Config runtime vs build-args | | `EXPOSE` | Documentation du port (ne publie pas) | | `USER` | Ne pas rester root | | `CMD` / `ENTRYPOINT` | Processus principal | ## Multi-stage (prod) ```dockerfile FROM node:22-alpine AS deps WORKDIR /app COPY package.json package-lock.json ./ RUN npm ci FROM node:22-alpine AS build WORKDIR /app COPY --from=deps /app/node_modules ./node_modules COPY . . RUN npm run build && npm prune --omit=dev FROM node:22-alpine AS runner WORKDIR /app ENV NODE_ENV=production COPY --from=build /app ./ USER node CMD ["node", "dist/server.js"] ``` ## Optimiser le cache et la taille 1. **Ordre des couches** : fichiers qui changent peu d’abord (`package*.json` avant le code). 2. **`.dockerignore`** : `node_modules`, `.git`, `.env`, builds, docs inutiles. 3. **Une responsabilité par `RUN` logique**, mais fusionner les `apt-get update && install && clean`. 4. **Multi-stage** : outils de build absents de l’image finale. 5. Mesurer : `docker images`, `docker history <image>`. ```bash docker build -t mon-app:dev . docker build --no-cache -t mon-app:dev . # diagnostic cache ``` ## Sécurité de base image - Image de base à jour, utilisateur non-root - Pas de secrets dans les couches (`ENV` / `COPY` de `.env`) - Scanner si disponible (`docker scout`, Trivy, etc.) — hors scope détaillé du cours ## Attribution Contenu pédagogique condensé avec autorisation du créateur — Yunt Academy.
Colle ce Markdown dans ton agent ou utilise les boutons ci-dessus pour l’écrire dans ton projet.
Ce que fait yunt-docker-images-build
Comprendre tags, digests, couches et registre
Écrire ou revoir un Dockerfile
Accélérer les builds (cache) et réduire la taille
Publier une image (`tag` / `push`)
Comment utiliser yunt-docker-images-build
1
Copie le prompt
Un clic copie le prompt packagé (ou l'envoie à ton agent).
2
L'agent installe le skill
Il ajoute le SKILL.md et ses ressources à ton projet.
3
Activation automatique
Le skill s'active dès que le contexte correspond.
Déclencheurs pour yunt-docker-images-build
Dis simplement à ton agent quelque chose comme :
Applique le skill yunt-docker-images-build à cette tâche
Utilise yunt-docker-images-build pour améliorer cette implémentation
Passe en revue ce sujet avec yunt-docker-images-build
Skills liés à yunt-docker-images-build
add cli command dotnet dotnet
Add or change a dotnet CLI command, subcommand, or option across the relevant CLI projects. USE FOR: adding or changing a dotnet CLI command/subcommand, adding a new Option<T> or Argument<T>, registering a subcommand in the command tree, changing an option's help description or a command's runtime message, wiring a command parser, or updating --help output.add cli command dotnet sdk
Add or change a dotnet CLI command, subcommand, or option across the relevant CLI projects. USE FOR: adding or changing a dotnet CLI command/subcommand, adding a new Option<T> or Argument<T>, registering a subcommand in the command tree, changing an option's help description or a command's runtime message, wiring a command parser, or updating --help output.add dotnet aot command dotnet dotnet
Add, enable, or review a dotnet CLI command or feature in the Native AOT CLI (src/Cli/dotnet-aot) and prove its compatibility. USE FOR: migrating a command or option to AOT, reviewing an AOT migration PR, defining conservative eligibility and managed fallback, changing AotSourceFiles.props or AotDependencies.props, validating AOT/managed parity, NativeAOT-publishing tests, checking binary-size impact, or using the dn harness and separated SDK layout. DO NOT USE FOR: resolving IL trim/AOT analyzer warnings alone (use dotnet-aot-compat), running dotnet.Tests incrementally (use incremental-test), or pure managed CLI work.