‫We hebben eerder gesproken over het Docker Compose YAML-bestand en in deze lezing gaan
‫we het hebben over de compose-opdrachtregel. Vereisten voor deze lezing zijn net als de rest voor
‫deze sectie, waar je echt afbeeldingen en containers moet kennen, en hoe je ze en de concepten eromheen uit eerdere secties moet gebruiken,
‫zodat je al die binnen het compose-commando en de YAML kunt gebruiken het dossier. De opdrachtregeltool Docker
‫Compose staat eigenlijk los van de Docker-tool.
‫Het is eigenlijk een apart binair bestand. Als je Docker voor Windows of Docker voor Mac gebruikt,
‫wordt het daar eigenlijk mee meegeleverd.
‫Als je de toolbox ook op Windows 7 gebruikt, bundelt het daarmee.
‫Maar als je Linux gebruikt, moet je het apart downloaden en dat kun je krijgen op GitHub. com/docker/compose, maar je kunt er ook gewoon
‫naar zoeken op Google, en er zal een link zijn in de referenties voor
‫deze sectie.
‫Maar ik moet heel snel zeggen dat het niet is ontworpen om een tool van productiekwaliteit te zijn.
‫Het is super ideaal voor lokale ontwikkeling en het heel snel testen van dingen die anders ingewikkeld zouden zijn om een
‫aantal opdrachten vanaf de opdrachtregel in te typen. Twee veelgebruikte opdrachten die we gebruiken,
‫zijn docker componeren, wat u waarschijnlijk 90% van de tijd gaat typen.
‫Het is een one-stop-shop.
‫Het is eigenlijk een enkele opdracht om alles in het opstelbestand te doen, inclusief het maken van volumes, het maken van netwerken,
‫het starten van alle containers met al hun configuratie-opties. Om vervolgens op te ruimen als
‫je
‫klaar bent, zal de havenarbeider die opstelt, wat veel mensen eigenlijk vergeten te
‫doen, daadwerkelijk na jou opruimen. Het verwijdert de containers, verwijdert de netwerken en volumes die niet meer nodig zijn.
‫Hiermee kunt u met deze twee opdrachten snel in en uit verschillende omgevingen springen voor ontwikkeling.
‫Dit is waar ik echt de aandacht krijg van ontwikkelaars die gewend zijn om zwerver en andere tools
‫te gebruiken om gecompliceerde omgevingen die ze nodig hebben voor ontwikkeling lokaal aan te passen.
‫Zodra ik ze Docker Compose en het samenstellingsbestand laat zien en hoe gemakkelijk het is om het samen met een Dockerfile
‫te gebruiken, begint het voor hen echt te klikken dat dit een betere en betrouwbaardere manier zou kunnen zijn om hun omgevingen in
‫te stellen.
‫En het vereist niet de tijd om verschillende VM's in
‫te stellen of de complexiteit van het beheren van een virtuele-machineomgeving.
‫Om je een beetje een voorproefje te geven, als je een project had waarbij je het typische onboarding-proces voor nieuwe ontwikkelaars had, dat alles
‫ging over het leren hoe je de juiste tools voor hun systeem kunt krijgen, en de juiste virtuele
‫machines gedownload en de juiste add-ons , en alle dingen waarvoor ze normaal gesproken gewoon een gerepliceerde
‫omgeving zouden moeten bouwen, met Docker Compose is het
‫net zo eenvoudig als het klonen van de omgeving met je opstelbestand ergens van een opslagplaats en vervolgens het uitvoeren
‫van de opdracht docker opstellen.
‫Het kan echt zo makkelijk zijn.
‫Laten we erin springen en spelen. Ik ben in de map voor het samenstellen van voorbeeld 2. De map voor het samenstellen van voorbeeld
‫1 was slechts enkele visuele voorbeelden die we in de laatste lezing lieten zien.
‫Maar in deze kunnen we deze daadwerkelijk uitvoeren en een snelle uitvoer krijgen.
‫Ik ga gewoon een docker opstellen.
‫Voordat we dat doen, wil ik je eerst laten zien wat het is.
‫Dit heeft twee services, of twee containers, en de eerste is een Nginx-server die in dit geval als
‫een proxy is geconfigureerd.
‫En dat gaat luisteren op mijn poort 80 op mijn lokale computer.
‫Je zult zien dat er daar een volumecommando is waar ik een bind-mount heb gedaan naar een bestand in deze map dat
‫een nginx-configuratiebestand wordt genoemd, en het is echt een heel eenvoudig klein bestand.
‫Het is niet per se belangrijk dat we al weten hoe dat bestand werkt. Het laat alleen zien hoe ik in
‫dit geval een bestand in mijn lokale omgeving neem. Laten we zeggen dat deze map een
‫Git-repository is die deze configuratiebestanden voor mij opslaat. Het stelt me in staat om dat bestand toe te wijzen aan de container
‫en aan het einde zie je het zeggen, 'ro', dat betekent alleen-lezen, wat betekent dat ik het niet in de container kan veranderen.
‫Dat is hier niet per se nodig. Ik wilde je alleen laten zien dat
‫je dat in dit geval zo zou doen. Dat configuratiebestand vertelt Nginx eigenlijk: 'in
‫plaats van een
‫webserver te zijn, zou ik willen dat je een omgekeerde proxy bent en voor een andere
‫server gaat zitten', in dit geval noemen we onze webserver, met zijn service name, en het draait de Apache 2-server, de afbeelding
‫httpd van de officiële afbeeldingsrepository op Docker Hub.
‫Je kunt ook bovenaan zien dat ik hier een versie heb opgegeven. Zo zou ik dat doen.
‫Binnen de beeldlijn.
‫Dus wat er zou moeten gebeuren, is dat wanneer ik deze docker-compositie typ, het beide containers zou moeten opstarten. Het zou een privénetwerk voor
‫hen tweeën moeten creëren.
‫Het zal automatisch dat bestand aankoppelen.
‫Het zal de poort openen en het zal beginnen met het dumpen van uitloggen op mijn scherm.
‫Je zult zien hoe daar, zei het, 'deze twee containers maken. ' Het is eigenlijk het
‫creëren van het netwerk.
‫U zult in mijn bestand opmerken dat ik geen netwerkgebied of volumegebied heb gespecificeerd omdat ze niet echt
‫vereist zijn.
‫Ze zijn alleen nodig als ik een aantal aangepaste dingen in het netwerk moet doen, zoals het wijzigen van de standaard
‫IP-adressen of het wijzigen van de netwerkdriver die wordt gebruikt.
‫Of in het geval van volumes kan ik benoemde volumes maken of een ander volumestuurprogramma gebruiken, en daar komen
‫we later in geavanceerde secties op terug.
‫Zodat u het weet, zo eenvoudig kunnen deze bestanden zijn.
‫Normaal heb je al die spullen niet nodig.
‫Die functies zijn er als je ze nodig hebt, maar meestal zullen deze zeer eenvoudige, kleine commando's zoals deze je
‫op weg helpen.
‫Wat heb ik gedaan? Dit is nu mijn Apache-server en mijn Nginx-server.
‫U zult zien dat de logboeken hier echt gekleurd zijn.
‫Dat is een leuke functie van Compose die je niet per se out-of-the-box krijgt
‫met Docker, namelijk dat het alle containers die het op het scherm op de voorgrond laat loggen.
‫Ik kan altijd hetzelfde doen als met Docker en docker compose up -d uitvoeren,
‫waardoor het op de achtergrond wordt uitgevoerd. Maar het is fijn om te zien dat wanneer ik dingen lokaal aan het ontwikkelen of testen
‫ben, ik mijn logs direct op het scherm heb.
‫Als ik naar mijn browser spring en vervolgens naar localhost ga, zie je dat er staat: 'Het werkt. ' Dat is
‫eigenlijk de Apache-server die antwoordt, niet de Nginx-server.
‫Het verkeer gaat eigenlijk via de Nginx reverse proxy.
‫Het herhaalt het verkeer naar de Apache-server. De Apache-server reageert met zijn
‫standaard HTML-basisbestand omdat we niets hebben gewijzigd.
‫Dan herhaalt de Nginx het naar mij.
‫Het is dus uw basiswebserver, webproxyconfiguratie.
‫Je kunt zien dat het verkeer ze allebei heeft geraakt. Ze werken eigenlijk via de proxy
‫omdat de
‫proxy hier eigenlijk een andere kleur heeft. De logboeken pompen hier naar buiten met een willekeurige kleur voor elke container in mijn opstelling, zodat ik
‫gemakkelijk kan zien wat er aan de hand is.
‫Als ik meerdere keren op verversen druk, zou je het verkeer zien verschijnen. Dan raakt het eerst de proxy en
‫vervolgens de backend-webserver.
‫Als ik dit hier wilde stoppen, zou ik op Control c drukken om het componeren in mijn scherm te stoppen.
‫Ik zou het eigenlijk opnieuw kunnen uitvoeren met de -d om het op de achtergrond uit te voeren.
‫Je kunt hier zien dat ik het kan verversen en het is er nog steeds. Ik kan een havenarbeider logboeken opstellen om dezelfde uitvoer van logboeken te zien
‫die ik een tijdje geleden zag.
‫Veel van de commando's die u in Docker misschien gewend bent, bevinden zich ook in Docker Compose. Wat Compose eigenlijk gewoon
‫doet, is dat het namens de Docker CLI op
‫de achtergrond praat met de Docker-API. Het is een soort vervanging voor de Docker CLI die nog steeds in
‫gesprek is met de Docker-server-API in de backend.
‫Natuurlijk laat de geweldige hulp hier, de hulp bij het samenstellen van de docker, me alle opdrachten zien die ik kan uitvoeren.
‫Je zult zien dat veel van deze er heel bekend uitzien, omdat ze het equivalent zijn
‫van het docker-commando dat alleen de context van de configuratie van het opstelbestand gebruikt.
‫Ik wil dit allemaal opruimen omdat ze nog steeds actief zijn. Ik kan hier een docker compose ps doen, die me zal laten zien
‫dat mijn beide containers draaien.
‫Ik kan een docker opstellen om alle services die erin worden uitgevoerd in een mooie opgemaakte
‫uitvoer te vermelden.
‫Dat is best wel cool.
‫Dan kan ik eindelijk een havenarbeider opstellen om te stoppen en mijn spullen op te ruimen waar ik net aan begonnen ben.
‫Je zult zien dat het me vertelt wat het daar heeft gedaan. Heb het allemaal opgeruimd.
‫Zo goed.
‫Dit is slechts een klein voorproefje.
‫We gaan Docker Compose in de rest van deze cursus veel gebruiken voor de
‫lokale ontwikkeling en het testen van dingen. Daarna blijven we de Docker Compose-bestanden gebruiken terwijl
‫we overgaan op de productieproblemen voor hoe we complexe omgevingen implementeren met een eenvoudig YAML-bestand.