Okay, rompons cette évolution de Docker.C'est fou comment les choses changent.
Rappelez-vous quand Docker se sentait comme... lutter contre un octopus agité? Tant de commandes, tant de concepts. construire, courir, pousser, tirer, volumes, réseaux... ma tête tournait.devrait, mais ça a toujours été un peu clunky, un peu... rempli de friction. mon histoire terminale était juste un désordre dedocker ps -a
En essayant désespérément de se souvenir deunecommandement de la semaine dernière.
Puis, lentement, les choses ont commencé à cliquer. Pas un grand moment eureka, mais une série de petites "aha!" découvertes. Petits trucs, optimisations, ajustements de flux de travail. Hacks, je suppose? Et honnêtement, ils sont tombés dans ma routine quotidienne tellement que je ne pense plus à eux.Comment je fais les choses.
Voici les changements de jeu qui se sont déroulés :
Terminal Aliases : The Sanity Savers ️
Première grande victoire ?Aliases.sérieusement. ♂️ Pourquoi j'ai passé des mois à taperdocker-compose up -d --build
oudocker ps
de nouveau et de nouveau ? mettre en place des aliases simples dans mon.bashrc
ou.zshrc
Ce fut une révélation.
# My sanity savers
alias dcu='docker-compose up -d'
alias dcd='docker-compose down'
alias dcb='docker-compose build'
alias dcr='docker-compose run --rm' # For running one-off commands
alias dps='docker ps'
alias dpa='docker ps -a'
alias di='docker images'
alias dip='docker image prune -f' # Prune dangling images
alias dvp='docker volume prune -f' # Prune unused volumes
alias dsp='docker system prune -af' # The big cleanup! 💥
Juste le typingdcu
Ah, les millisecondes sauvées ! ça sonne trivial, mais multipliez-le par des dizaines de fois par jour... ça ajoute. Mes doigts me remercient. Moins de typing, moins de typings, plus de flux.
Obtenez le cheatsheet ultime de docker ici :Télécharger Cheatsheet
2 - Le Puissant.dockerignore
Titre : Slimming Down Builds
Puis vint le.dockerignore
Un autre moment "duh" je savais de.gitignore
bien sûr, mais au début, je ne comprenais pas à quel point.dockerignore
est pour la performance de la construction. Mes premières constructions de Docker étaientsi lentementParce que le contexte de construction envoyaittoutIl s’agit du Docker Daemon.node_modules
, les journaux, les fichiers temporaires, les artefacts de construction locale... tout !
Créer une bonne.dockerignore
fichier, listant toutes les poubelles dont je n'avais pas besoinà l’intérieurSoudain, les constructions étaient plus rapides. Les images étaient plus petites (parfois de manière dramatique). C'était comme mettre des blinders sur Docker, en lui disant: "Juste se concentrer surCeci, ignorez le reste." Moins de confusion, boucle de rétroaction plus rapide.
Bâtiments en plusieurs étapes : machines de production maigres, moyennes ➡️
Multi-stage builds... bon, ça a l'air un peu plus avancé au début. Le concept est brillant, cependant.
- Étape 1 : Utilisez une image de base avec tous les outils de construction, les compilateurs, les SDK et les dépendances nécessaires pour créer l’artefact de l’application (comme un JavaScript compilé ou bundled).
- Étape 2: Commencez une nouvelle image de base propre et minimale (comme alpine ou sans souci).
- Copier : Copier uniquement l’artefact final de la première étape dans cette deuxième étape propre.
Au lieu d'envoyer des images gonflées avec des outils de construction et des dépendances de développeur (qui sont également un risque de sécurité!), J'envoie des images maigres contenantuniquementIl m'a fallu un peu de temps pour envelopper ma tête autour de la syntaxe, mais wow, la différence dans la taille de l'image et la posture de sécurité est énorme.
Docker Compose Overrides : Taming Environments ️
Parlons nousDocker Compose override
fichiers. Gérer différents environnements était une douleur. Dev a besoin de volumes montés pour le rechargement de code en direct, les ports de débogage sont ouverts. Prod a besoin de variables environnementales différentes, peut-être des limites de ressources plus strictes, peut-être un point d'entrée différent. Essayer de gérer cela avec undocker-compose.yml
était gênant, impliquant des sections commentées ou complexesif
conditions basées sur des variables environnementales.
Découvertedocker-compose.override.yml
C’était une pure bénédiction. Vous avez votre basedocker-compose.yml
avec la configuration commune. Ensuite, vous créezdocker-compose.override.yml
(ce qui est généralement ignoré par.gitignore
Pour le développement local, ajoutez des ajustements – monter des répertoires de code, exposer les différents ports, ajouter des outils de débogage.override
Vous pouvez même avoir des fichiers spécifiques tels quedocker-compose.prod.yml
et utiliser le-f
Le drapeau :docker-compose -f docker-compose.yml -f docker-compose.prod.yml up -d
Aucune séparation des préoccupations. Plus de commits accidentels de paramètres de dev!
Nettoyage régulier: Garder le système à jour ✨
Enfin, l’habitude deregular cleanupDocker peut accumulertant deImages dangereuses (couches non étiquetées de builds précédents), volumes inutilisés, conteneurs arrêtés, anciennes caches de build... Mon espace disque a mystérieusement disparu.
Entrer dans le rythme de la course périodiquedocker system prune -af
(l'approche agressive) ou la plus cibléedocker image prune
, àdocker volume prune
, àdocker network prune
etdocker builder prune
ressent comme le décluttering numérique. Il maintient les choses en marche, empêche les problèmes de cache étranges (« pourquoi mon changement n'apparaît-il pas ? »), et libère des gigabytes précieux. Un espace de travail propre, un esprit propre, non? ♂️ Courirdsp
(mon alias pourdocker system prune -af
C’est maintenant une routine satisfaisante, presque thérapeutique.
Donc oui, ce ne sont plus que des "hacks".Ils sont enracinés.Ils sont la mémoire musculaire.Les aliases volent de mes doigts sans réfléchir..dockerignore
est l'un des premiers fichiers que j'ai créés. Les constructions multi-étapes sont par défaut pour tout ce qui pourrait être en cours de vie. Les surrides composées gèrent les différences d'environnement de manière fluide.
Docker est passé d'être cet octopus ennuyeux à un assistant puissant et rationnalisé. Il est hors de mon chemin maintenant. les constructions sont plus rapides, les déploiements sont plus lisses, mon espace disque est plus heureux, et honnêtement,Je suisplus heureux parce qu'il y a moins de friction. Il ne s'agit pas seulement de Docker lui-même; il s'agit de la façon dont maîtriser ces petits détails a allégé tout mon workflow de développement et de déploiement. 👍 Il est certainement devenu une partie de ma vie, ou au moins, ma vie numérique.