‫Oke. Laten we eens kijken naar wat meer Dockerfile-voorbeelden.
‫Laten we in onze repository die je hebt gedownload van mijn Github, ingaan op voorbeeldnummer 2 van Dockerfile.
‫Deze keer hebben we eigenlijk twee bestanden.
‫We hebben de Dockerfile. En nu hebben we een index. html.
‫Super simpel. Hallo Wereld. HTML-code.
‫Het is niet echt belangrijk om de HTML te begrijpen.
‫We gaan het gewoon naar onze containerafbeelding kopiëren terwijl we het bouwen.
‫Als we naar de Dockerfile kijken, zie je in deze dat we Nginx eigenlijk gebruiken als ons
‫FROM-commando.
‫We bouwen niet onze eigen Nginx, want idealiter, als je een officiële afbeelding kunt gebruiken om de klus
‫te klaren vanuit Docker Hub, zal het een stuk gemakkelijker voor je zijn om dit Docker-bestand te onderhouden en
‫goed te laten werken.
‫In eenvoudigere scenario's is het officiële beeld vaak werk. Maar naarmate je groeit en complexiteit toevoegt aan je
‫omgeving en je systemen, zul je waarschijnlijk merken dat je extra aangepaste software moet toevoegen, of de
‫manier waarop het begint moet veranderen, of scripts moet toevoegen zodat het de configuratie aanpast.
‫Maar als ik een nieuw greenfield-project start, of als ik een oude app converteer, begin ik altijd
‫met de officiële afbeeldingen van Docker Hub. Als ik dan een aantal wegversperringen tegenkom en ik die
‫afbeelding niet meer kan gebruiken, ga ik misschien terug naar Docker Hub en kijk ik nog een keer of
‫er iets speciaals is dat echt populair is, dat ik kan vertrouwen, en onderzoek en kijken of het mijn probleem oplost.
‫Maar er is niets mis met zelf bouwen.
‫Het is gewoon meer werk en meer onderhoud in de loop van de tijd.
‫Dus hier is het supersimpel. We hebben drie strofen.
‫Je hebt de FROM al eerder gezien. En deze keer hebben we de WORKDIR.
‫Dat is eigenlijk gewoon het uitvoeren van een wijziging in de cd-ruimtemap. Dus je zou in de verleiding kunnen komen om de opdracht run te gebruiken en
‫gewoon run cd in deze map te typen en dan wat dingen te doen. Maar de beste werkwijze voor Dockerfiles
‫is om altijd een aparte WORKDIR-stanza te gebruiken voor wanneer u van directory verandert.
‫Dus als je bestand een beetje ingewikkeld wordt en je heen en weer moet gaan in je container om dingen te
‫doen terwijl het aan het bouwen is, wil je altijd de WORKDIR gebruiken omdat het een stuk eenvoudiger is om in de Dockerfile te beschrijven wat
‫je aan het doen bent.
‫In dit geval, wat we hier eigenlijk doen, is dat we overschakelen naar de standaard
‫Nginx-directory voor zijn HTML-bestanden.
‫In de standaardconfiguratie op Docker Hub fungeert Nginx net als een webserver en serveert het
‫alleen statische bestanden direct vanaf de containerschijf.
‫De laatste strofe die we hier hebben, is de kopie. En dit is de strofe die u altijd zult
‫gebruiken om uw broncode van uw lokale machine of uw buildservers naar uw containerafbeeldingen te kopiëren.
‫In dit geval nemen we gewoon onze eenvoudige index. html en we overschrijven het bestand in
‫de standaardmap van Nginx, zodat het onze aangepaste startpagina voor de webserver is.
‫Voordat we dit bouwen, zul je merken dat we vereiste strofen missen, zoals de cmd.
‫Dus hoe kunnen we daarmee wegkomen?
‫Welnu, er is al een cmd gespecificeerd in de FROM-afbeelding.
‫En als we de FROM gebruiken, erven we alles van de Dockerfile die we 'froming' hebben, als dat al een woord is.
‫Dit is hoe je Dockerfiles aan elkaar kunt koppelen, zodat afbeeldingen afhankelijk zijn van andere afbeeldingen
‫die afhankelijk zijn van andere afbeeldingen.
‫Oke. Laten we eens kijken hoe dit werkt.
‫Voordat we dit bouwen, laten we ons er even snel aan herinneren wat een standaard Nginx-server doet.
‫Laten we een snelle docker-container uitvoeren -p 8080, en we zullen dit niet erg lang nodig hebben, dus we gaan een --rm doen, zodat het wordt
‫verwijderd bij het afsluiten. De naam interesseert ons niet. We
‫gaan gewoon Nginx draaien. Als we naar onze browser springen en gewoon localhost
‫typen, zien we de standaard Nginx-indexpagina.
‫OKE.
‫Laten we dat niet vergeten, en laten we dan deze container verlaten
‫en nu onze versie van Nginx bouwen met ons extra broncodebestand.
‫OKE.
‫Deze zou eigenlijk heel snel moeten gaan.
‫Je merkt dat het maar een paar seconden duurde. Dat komt omdat we Nginx al in onze imagecache hadden. En het enige wat het
‫draaide was het kopiëren van een heel klein bestand en het veranderen van de werkdirectory.
‫Laten we nu de exacte opdracht uitvoeren die we zojuist voor Nginx hebben uitgevoerd. Alleen deze keer gaan we deze
‫nieuwe afbeelding gebruiken die we zojuist hebben gemaakt.
‫Schakel over naar onze browser, en verversen, en geweldig.
‫Onze aangepaste index-HTML wordt daar uitgevoerd en onze container werkt.
‫Als we een snelle afbeelding ls doen, kunnen we onze nieuwste afbeelding bovenaan zien.
‫Als we dit echt naar Docker Hub wilden sturen, werkt het op dezelfde manier als we eerder deden.
‫We moeten het alleen opnieuw taggen. Dus we kunnen een docker-afbeeldingstag doen.
‫Als je het help-commando onthoudt, kunnen we naar het formaat kijken en het is altijd degene die
‫we taggen en de tag die we willen dat het wordt genoemd. Dus docker image tag nginx met html nieuwste.
‫En dan zal ik het bretfisher moeten noemen... zoals dat.
‫Als ik dan opnieuw een docker-afbeelding ls doe, zul je zien dat die bovenste twee regels weer dezelfde afbeeldings-ID zijn
‫en alleen anders zijn getagd.
‫Nu kon ik een docker-push doen met die repository en tag, en ik kon het op Docker Hub krijgen.